diff --git a/.DS_Store b/.DS_Store index 64991881..769c236f 100755 Binary files a/.DS_Store and b/.DS_Store differ diff --git a/.github/workflows/build-wheels.yml b/.github/workflows/build-wheels.yml new file mode 100644 index 00000000..94284572 --- /dev/null +++ b/.github/workflows/build-wheels.yml @@ -0,0 +1,46 @@ +name: Build WhiteboxTools + +on: + workflow_dispatch: + # push: + # branches: + # - main # Adjust to match your primary branch name + +jobs: + build: + runs-on: ${{ matrix.os }} + strategy: + matrix: + # os: [ubuntu-latest, windows-latest, macOS-latest] + os: [ubuntu-20.04, windows-latest, macos-12, macOS-latest] + python-version: ['3.8'] + + steps: + - name: Check out code + uses: actions/checkout@v4 + + # # Install Rust and Cargo + # - name: Install Rust + # uses: actions-rs/toolchain@v1 + # with: + # profile: minimal + # toolchain: stable + # override: true + + # Install Rust and Cargo + - name: Install Rust + uses: dtolnay/rust-toolchain@stable + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v5 + with: + python-version: ${{ matrix.python-version }} + + - name: Run build script + run: python build.py + + - name: Upload WBT + uses: actions/upload-artifact@v4 + with: + name: wbt-${{ matrix.os }}-${{ matrix.python-version }} + path: WBT diff --git a/Cargo.lock b/Cargo.lock index 2936d8e5..70163bbf 100755 --- a/Cargo.lock +++ b/Cargo.lock @@ -4,9 +4,9 @@ version = 3 [[package]] name = "ab_glyph" -version = "0.2.18" +version = "0.2.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcdbc68024b653943864d436fe8a24b028095bc1cf91a8926f8241e4aaffe59" +checksum = "6f90148830dac590fac7ccfe78ec4a8ea404c60f75a24e16407a71f0f40de775" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -14,15 +14,18 @@ dependencies = [ [[package]] name = "ab_glyph_rasterizer" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "330223a1aecc308757b9926e9391c9b47f8ef2dbd8aea9df88312aea18c5e8d6" +checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" [[package]] -name = "adler" -version = "0.2.3" +name = "addr2line" +version = "0.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ee2a4ec343196209d6594e19543ae87a39f96d5534d7174822a3ad825dd6ed7e" +checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" +dependencies = [ + "gimli", +] [[package]] name = "adler" @@ -36,17 +39,29 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" +[[package]] +name = "aes" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" +dependencies = [ + "cfg-if", + "cipher", + "cpufeatures", +] + [[package]] name = "ahash" -version = "0.8.1" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "464b3811b747f8f7ebc8849c9c728c39f6ac98a055edad93baf9eb330e3f8f9d" +checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" dependencies = [ "cfg-if", "getrandom 0.2.8", "once_cell", "serde", "version_check", + "zerocopy", ] [[package]] @@ -86,9 +101,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.83" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "25bdb32cbbdce2b519a9cd7df3a678443100e265d5e25ca763b7572a5104f5f3" [[package]] name = "approx" @@ -114,7 +129,7 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dc120354d1b5ec6d7aaf4876b602def75595937b5e15d356eb554ab5177e08bb" dependencies = [ - "clipboard-win 4.4.2", + "clipboard-win 4.5.0", "log", "objc", "objc-foundation", @@ -127,9 +142,9 @@ dependencies = [ [[package]] name = "arrayref" -version = "0.3.6" +version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" +checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" [[package]] name = "arrayvec" @@ -160,9 +175,9 @@ dependencies = [ [[package]] name = "atomic_refcell" -version = "0.1.8" +version = "0.1.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" +checksum = "41e67cd8309bbd06cd603a9e693a784ac2e5d1e955f11286e355089fcab3047c" [[package]] name = "autocfg" @@ -176,17 +191,38 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a" +[[package]] +name = "backtrace" +version = "0.3.71" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide 0.7.1", + "object", + "rustc-demangle", +] + [[package]] name = "base64" -version = "0.13.1" +version = "0.21.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d297deb1925b89f2ccc13d7635fa0714f12c87adce1c75356b39ca9b7178567" + +[[package]] +name = "base64ct" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" +checksum = "8c3c1a368f70d6cf7302d78f8f7093da241fb8e8807c05cc9e51a125895a6d5b" [[package]] name = "bit_field" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcb6dd1c2376d2e096796e234a70e17e94cc2d5d54ff8ce42b28cef1d0d359a4" +checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" [[package]] name = "bitflags" @@ -194,12 +230,30 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" +[[package]] +name = "bitflags" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" +dependencies = [ + "serde", +] + [[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 0.14.7", +] + [[package]] name = "brotli" version = "3.3.0" @@ -238,13 +292,13 @@ dependencies = [ [[package]] name = "bytemuck_derive" -version = "1.3.0" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5fe233b960f12f8007e3db2d136e3cb1c291bfd7396e384ee76025fc1a3932b4" +checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" dependencies = [ "proc-macro2", "quote", - "syn 1.0.103", + "syn 2.0.61", ] [[package]] @@ -255,9 +309,9 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "bytes" -version = "1.2.1" +version = "1.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec8a7b6a70fde80372154c65702f00a0f56f3e1c36abbc6c440484be248856db" +checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" [[package]] name = "bzip2" @@ -271,9 +325,9 @@ dependencies = [ [[package]] name = "bzip2" -version = "0.4.3" +version = "0.4.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6afcd980b5f3a45017c57e57a2fcccbb351cc43a356ce117ef760ef8052b89b0" +checksum = "bdb116a6ef3f6c3698828873ad02c3014b3c85cadb88496095628e3ef1e347f8" dependencies = [ "bzip2-sys", "libc", @@ -302,12 +356,12 @@ dependencies = [ [[package]] name = "calloop" -version = "0.10.1" +version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a22a6a8f622f797120d452c630b0ab12e1331a1a753e2039ce7868d4ac77b4ee" +checksum = "595eb0438b3c6d262395fe30e6de9a61beb57ea56290b00a07f227fe6e20cbf2" dependencies = [ "log", - "nix 0.24.2", + "nix 0.24.3", "slotmap", "thiserror", "vec_map", @@ -321,9 +375,14 @@ checksum = "fd6c0e7b807d60291f42f33f58480c0bfafe28ed08286446f45e463728cf9c1c" [[package]] name = "cc" -version = "1.0.75" +version = "1.0.97" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41ca34107f97baef6cfb231b32f36115781856b8f8208e8c580e0bcaea374842" +checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" +dependencies = [ + "jobserver", + "libc", + "once_cell", +] [[package]] name = "cesu8" @@ -333,11 +392,12 @@ checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" [[package]] name = "cfg-expr" -version = "0.11.0" +version = "0.15.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +checksum = "d067ad48b8650848b989a59a86c6c36a995d02d2bf778d45c3c5d57bc2718f02" dependencies = [ "smallvec", + "target-lexicon", ] [[package]] @@ -370,6 +430,16 @@ dependencies = [ "winapi", ] +[[package]] +name = "cipher" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "773f3b9af64447d2ce9850330c473515014aa235e6a783b02db81ff39e4a3dad" +dependencies = [ + "crypto-common", + "inout", +] + [[package]] name = "clipboard-win" version = "3.1.1" @@ -382,9 +452,9 @@ dependencies = [ [[package]] name = "clipboard-win" -version = "4.4.2" +version = "4.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4ab1b92798304eedc095b53942963240037c0516452cb11aeba709d420b2219" +checksum = "7191c27c2357d9b7ef96baac1773290d4ca63b24205b82a3fd8a0637afcf0362" dependencies = [ "error-code", "str-buf", @@ -397,14 +467,14 @@ version = "0.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ddfc5b9aa5d4507acaf872de71051dfd0e309860e88966e1051e462a077aac4f" dependencies = [ - "bitflags", + "bitflags 1.3.2", ] [[package]] name = "cmake" -version = "0.1.49" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db34956e100b30725f2eb215f90d4871051239535632f84fea3bc92722c66b7c" +checksum = "a31c789563b815f77f4250caee12365734369f942439b7defd71e18a48197130" dependencies = [ "cc", ] @@ -415,27 +485,42 @@ version = "0.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f425db7937052c684daec3bd6375c8abe2d146dca4b8b143d6db777c39138f3a" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "cocoa-foundation", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "foreign-types 0.3.2", "libc", "objc", ] +[[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 0.23.2", + "foreign-types 0.5.0", + "libc", + "objc", +] + [[package]] name = "cocoa-foundation" -version = "0.1.0" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ade49b65d560ca58c403a479bb396592b155c0185eada742ee323d1d68d6318" +checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" dependencies = [ - "bitflags", + "bitflags 1.3.2", "block", "core-foundation", "core-graphics-types", - "foreign-types 0.3.2", "libc", "objc", ] @@ -458,9 +543,9 @@ checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" [[package]] name = "combine" -version = "4.6.6" +version = "4.6.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "35ed6e9d84f0b51a7f52daf1c7d71dd136fd7a3f41a8462b8cdb8c78d920fad4" +checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" dependencies = [ "bytes", "memchr", @@ -472,6 +557,12 @@ version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28b9d6de7f49e22cf97ad17fc4036ece69300032f45f78f30b4a4482cdc3f4a6" +[[package]] +name = "constant_time_eq" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "245097e9a4535ee1e3e3931fcfcd55a796a44c643e8596ff6566d68f09b87bbc" + [[package]] name = "copypasta" version = "0.8.2" @@ -488,9 +579,9 @@ dependencies = [ [[package]] name = "core-foundation" -version = "0.9.3" +version = "0.9.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" dependencies = [ "core-foundation-sys", "libc", @@ -498,9 +589,9 @@ dependencies = [ [[package]] name = "core-foundation-sys" -version = "0.8.3" +version = "0.8.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" +checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" [[package]] name = "core-graphics" @@ -508,42 +599,63 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2581bbab3b8ffc6fcbd550bf46c355135d16e9ff2a6ea032ad6b9bf1d7efe4fb" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", "core-graphics-types", "foreign-types 0.3.2", "libc", ] +[[package]] +name = "core-graphics" +version = "0.23.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "core-graphics-types", + "foreign-types 0.5.0", + "libc", +] + [[package]] name = "core-graphics-types" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3a68b68b3446082644c91ac778bf50cd4104bfb002b5a6a7c44cca5a2c70788b" +checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" dependencies = [ - "bitflags", + "bitflags 1.3.2", "core-foundation", - "foreign-types 0.3.2", "libc", ] [[package]] name = "core-text" -version = "19.2.0" +version = "20.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d74ada66e07c1cefa18f8abfba765b486f250de2e4a999e5727fc0dd4b4a25" +checksum = "c9d2790b5c08465d49f8dc05c8bcae9fea467855947db39b0f8145c091aaced5" dependencies = [ "core-foundation", - "core-graphics", - "foreign-types 0.3.2", + "core-graphics 0.23.2", + "foreign-types 0.5.0", + "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.2.1" +version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81156fece84ab6a9f2afdb109ce3ae577e42b1228441eded99bd77f627953b1a" +checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" dependencies = [ "cfg-if", ] @@ -591,25 +703,20 @@ dependencies = [ [[package]] name = "crossbeam-utils" -version = "0.8.1" +version = "0.8.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02d96d1e189ef58269ebe5b97953da3274d83a93af647c2ddd6f9dab28cedb8d" -dependencies = [ - "autocfg 1.0.1", - "cfg-if", - "lazy_static", -] +checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" [[package]] name = "crossfont" -version = "0.5.1" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21fd3add36ea31aba1520aa5288714dd63be506106753226d0eb387a93bc9c45" +checksum = "3eb5a3822b594afc99b503cc1859b94686d3c3efdd60507a28587dab80ee1071" dependencies = [ - "cocoa", + "cocoa 0.25.0", "core-foundation", "core-foundation-sys", - "core-graphics", + "core-graphics 0.23.2", "core-text", "dwrote", "foreign-types 0.5.0", @@ -629,6 +736,16 @@ version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" +[[package]] +name = "crypto-common" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" +dependencies = [ + "generic-array 0.14.7", + "typenum", +] + [[package]] name = "cty" version = "0.2.2" @@ -714,6 +831,17 @@ dependencies = [ "syn 1.0.103", ] +[[package]] +name = "digest" +version = "0.10.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" +dependencies = [ + "block-buffer", + "crypto-common", + "subtle", +] + [[package]] name = "directories-next" version = "2.0.0" @@ -743,18 +871,18 @@ checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" [[package]] name = "dlib" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac1b7517328c04c2aa68422fc60a41b92208182142ed04a25879c26c8f878794" +checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" dependencies = [ - "libloading", + "libloading 0.8.3", ] [[package]] name = "downcast-rs" -version = "1.2.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ea835d29036a4087793836fa931b08837ad5e957da9e23886b29586fb9b6650" +checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" [[package]] name = "dwrote" @@ -868,9 +996,9 @@ dependencies = [ [[package]] name = "encoding_rs" -version = "0.8.31" +version = "0.8.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" dependencies = [ "cfg-if", ] @@ -891,6 +1019,22 @@ dependencies = [ "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.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" +dependencies = [ + "libc", + "windows-sys 0.52.0", +] + [[package]] name = "error-code" version = "2.3.1" @@ -919,17 +1063,18 @@ dependencies = [ [[package]] name = "exr" -version = "1.5.2" +version = "1.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8eb5f255b5980bb0c8cf676b675d1a99be40f316881444f44e0462eaf5df5ded" +checksum = "d1e481eb11a482815d3e9d618db8c42a93207134662873809335a92327440c18" dependencies = [ "bit_field", "flume", "half", "lebe", - "miniz_oxide 0.6.2", + "miniz_oxide 0.7.1", + "rayon-core", "smallvec", - "threadpool", + "zune-inflate", ] [[package]] @@ -940,23 +1085,27 @@ checksum = "4f4cdac9e4065d7c48e30770f8665b8cef9a3a73a63a4056a33a5f395bc7cf75" [[package]] name = "fastrand" -version = "1.8.0" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" + +[[package]] +name = "fdeflate" +version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" dependencies = [ - "instant", + "simd-adler32", ] [[package]] name = "flate2" -version = "1.0.20" +version = "1.0.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd3aec53de10fe96d7d8c565eb17f2c687bb5518a2ec453b5b1252964526abe0" +checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" dependencies = [ - "cfg-if", "crc32fast", - "libc", - "miniz_oxide 0.4.3", + "miniz_oxide 0.7.1", ] [[package]] @@ -999,13 +1148,13 @@ dependencies = [ [[package]] name = "foreign-types-macros" -version = "0.2.2" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8469d0d40519bc608ec6863f1cc88f3f1deee15913f2f3b3e573d81ed38cccc" +checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" dependencies = [ "proc-macro2", "quote", - "syn 1.0.103", + "syn 2.0.61", ] [[package]] @@ -1022,9 +1171,9 @@ checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" [[package]] name = "form_urlencoded" -version = "1.1.0" +version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" dependencies = [ "percent-encoding", ] @@ -1035,7 +1184,7 @@ version = "0.26.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "74eadec9d0a5c28c54bb9882e54787275152a4e36ce206b45d7451384e5bf5fb" dependencies = [ - "bitflags", + "bitflags 1.3.2", "freetype-sys", "libc", ] @@ -1059,42 +1208,42 @@ checksum = "a06f77d526c1a601b7c4cdd98f54b5eaabffc14d5f2f0296febdc7f357c6d3ba" [[package]] name = "futures-channel" -version = "0.3.25" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.25" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" +checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" [[package]] name = "futures-io" -version = "0.3.25" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" +checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" [[package]] name = "futures-sink" -version = "0.3.25" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "39c15cf1a4aa79df40f1bb462fb39676d0ad9e366c2a33b590d7c66f4f81fcf9" +checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" [[package]] name = "futures-task" -version = "0.3.25" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" +checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" [[package]] name = "futures-util" -version = "0.3.25" +version = "0.3.30" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" dependencies = [ "futures-core", "futures-io", @@ -1144,6 +1293,16 @@ dependencies = [ "typenum", ] +[[package]] +name = "generic-array" +version = "0.14.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" +dependencies = [ + "typenum", + "version_check", +] + [[package]] name = "gethostname" version = "0.2.3" @@ -1180,14 +1339,20 @@ dependencies = [ [[package]] name = "gif" -version = "0.11.4" +version = "0.13.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" +checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" dependencies = [ "color_quant", "weezl", ] +[[package]] +name = "gimli" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" + [[package]] name = "gio-sys" version = "0.15.10" @@ -1241,19 +1406,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "444c9ad294fdcaf20ccf6726b78f380b5450275540c9b68ab62f49726ad1c713" dependencies = [ "cgl", - "cocoa", + "cocoa 0.24.1", "core-foundation", "glutin_egl_sys", "glutin_gles2_sys", "glutin_glx_sys", "glutin_wgl_sys", - "libloading", + "libloading 0.7.4", "log", "objc", "once_cell", "osmesa-sys", "parking_lot", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", "wayland-client", "wayland-egl", "winapi", @@ -1330,9 +1495,9 @@ dependencies = [ [[package]] name = "h2" -version = "0.3.15" +version = "0.3.26" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5f9f29bc9dda355256b2916cf526ab02ce0aeaaaf2bad60d65ef3f12f11dd0f4" +checksum = "81fe527a889e1532da5c525686d96d4c2e74cdd345badf8dfef9f6b39dd5f5e8" dependencies = [ "bytes", "fnv", @@ -1349,9 +1514,9 @@ dependencies = [ [[package]] name = "half" -version = "2.1.0" +version = "2.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad6a9459c9c30b177b925162351f97e7d967c7ea8bab3b8352805327daf45554" +checksum = "02b4af3693f1b705df946e9fe5631932443781d0aabb423b62fcd4d73f6d2fd0" dependencies = [ "crunchy", ] @@ -1367,9 +1532,9 @@ dependencies = [ [[package]] name = "hashbrown" -version = "0.12.3" +version = "0.14.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" +checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" [[package]] name = "heapless" @@ -1386,9 +1551,9 @@ dependencies = [ [[package]] name = "heck" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" +checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" [[package]] name = "hermit-abi" @@ -1399,11 +1564,29 @@ dependencies = [ "libc", ] +[[package]] +name = "hmac" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c49c37c09c17a53d937dfbb742eb3a961d65a994e6bcdcf37e7399d0cc8ab5e" +dependencies = [ + "digest", +] + +[[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 = "http" -version = "0.2.8" +version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +checksum = "601cbb57e577e2f5ef5be8e7b83f0f63994f25aa94d673e54a92d5c516d101f1" dependencies = [ "bytes", "fnv", @@ -1412,9 +1595,9 @@ dependencies = [ [[package]] name = "http-body" -version = "0.4.5" +version = "0.4.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +checksum = "7ceab25649e9960c0311ea418d17bee82c0dcec1bd053b5f9a66e265a693bed2" dependencies = [ "bytes", "http", @@ -1429,15 +1612,15 @@ checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" [[package]] name = "httpdate" -version = "1.0.2" +version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" +checksum = "df3b46402a9d5adb4c86a0cf463f42e19994e3ee891101b1841f30a545cb49a9" [[package]] name = "hyper" -version = "0.14.23" +version = "0.14.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "034711faac9d2166cb1baf1a2fb0b60b1f277f8492fd72176c17f3515e1abd3c" +checksum = "bf96e135eb83a2a8ddf766e426a841d8ddd7449d5f00d34ea02b41d2f19eef80" dependencies = [ "bytes", "futures-channel", @@ -1502,9 +1685,9 @@ checksum = "b9e0384b61958566e926dc50660321d12159025e767c18e043daf26b70104c39" [[package]] name = "idna" -version = "0.3.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" dependencies = [ "unicode-bidi", "unicode-normalization", @@ -1512,9 +1695,9 @@ dependencies = [ [[package]] name = "image" -version = "0.24.4" +version = "0.24.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd8e4fb07cf672b1642304e731ef8a6a4c7891d67bb4fd4f5ce58cd6ed86803c" +checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" dependencies = [ "bytemuck", "byteorder", @@ -1522,23 +1705,31 @@ dependencies = [ "exr", "gif", "jpeg-decoder", - "num-rational 0.4.1", "num-traits", "png", - "scoped_threadpool", + "qoi", "tiff", ] [[package]] name = "indexmap" -version = "1.9.1" +version = "2.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" dependencies = [ - "autocfg 1.0.1", + "equivalent", "hashbrown", ] +[[package]] +name = "inout" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a0c10553d664a4d0bcff9f4215d0aac67a639cc68ef660840afe309b807bc9f5" +dependencies = [ + "generic-array 0.14.7", +] + [[package]] name = "instant" version = "0.1.12" @@ -1553,9 +1744,9 @@ dependencies = [ [[package]] name = "ipnet" -version = "2.5.1" +version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f88c5561171189e69df9d98bcf18fd5f9558300f7ea7b801eb8a0fd748bd8745" +checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" [[package]] name = "itoa" @@ -1579,16 +1770,18 @@ dependencies = [ [[package]] name = "jni" -version = "0.20.0" +version = "0.21.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "039022cdf4d7b1cf548d31f60ae783138e5fd42013f6271049d7df7afadef96c" +checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" dependencies = [ "cesu8", + "cfg-if", "combine", "jni-sys", "log", "thiserror", "walkdir", + "windows-sys 0.45.0", ] [[package]] @@ -1597,20 +1790,29 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" +[[package]] +name = "jobserver" +version = "0.1.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" +dependencies = [ + "libc", +] + [[package]] name = "jpeg-decoder" -version = "0.2.6" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9478aa10f73e7528198d75109c8be5cd7d15fb530238040148d5f9a22d4c5b3b" +checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" dependencies = [ "rayon", ] [[package]] name = "js-sys" -version = "0.3.60" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" dependencies = [ "wasm-bindgen", ] @@ -1702,9 +1904,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" [[package]] name = "libc" -version = "0.2.137" +version = "0.2.154" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fc7fcc620a3bff7cdd7a365be3376c97191aeaccc2a603e600951e452615bf89" +checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" [[package]] name = "libloading" @@ -1716,12 +1918,32 @@ dependencies = [ "winapi", ] +[[package]] +name = "libloading" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" +dependencies = [ + "cfg-if", + "windows-targets 0.52.5", +] + [[package]] name = "libm" version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c7d73b3f436185384286bd8098d17ec07c9a7d2388a6599f824d8502b529702a" +[[package]] +name = "libredox" +version = "0.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0ff37bd590ca25063e35af745c343cb7a0271906fb7b37e4813e8f79f00268d" +dependencies = [ + "bitflags 2.5.0", + "libc", +] + [[package]] name = "link-cplusplus" version = "1.0.8" @@ -1731,6 +1953,12 @@ dependencies = [ "cc", ] +[[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.6" @@ -1742,12 +1970,9 @@ dependencies = [ [[package]] name = "log" -version = "0.4.14" +version = "0.4.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51b9bbe6c47d51fc3e1a9b945965946b4c44142ab8792c50835a980d362c2710" -dependencies = [ - "cfg-if", -] +checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" [[package]] name = "lzw" @@ -1784,15 +2009,15 @@ dependencies = [ [[package]] name = "memchr" -version = "2.5.0" +version = "2.7.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" +checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" [[package]] name = "memmap2" -version = "0.5.7" +version = "0.5.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95af15f345b17af2efc8ead6080fb8bc376f8cec1b35277b935637595fe77498" +checksum = "83faa42c0a078c393f6b29d5db232d8be22776a891f8f56e5284faee4a20b327" dependencies = [ "libc", ] @@ -1808,15 +2033,9 @@ dependencies = [ [[package]] name = "mime" -version = "0.3.16" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" - -[[package]] -name = "minimal-lexical" -version = "0.2.1" +version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +checksum = "6877bb514081ee2a7ff5ef9de3281f14a4dd4bceac4c09388074a6b5df8a139a" [[package]] name = "miniz_oxide" @@ -1827,44 +2046,26 @@ dependencies = [ "adler32", ] -[[package]] -name = "miniz_oxide" -version = "0.4.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f2d26ec3309788e423cfbf68ad1800f061638098d76a83681af979dc4eda19d" -dependencies = [ - "adler 0.2.3", - "autocfg 1.0.1", -] - -[[package]] -name = "miniz_oxide" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b275950c28b37e794e8c55d88aeb5e139d0ce23fdbbeda68f8d7174abdf9e8fa" -dependencies = [ - "adler 1.0.2", -] - [[package]] name = "miniz_oxide" version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ - "adler 1.0.2", + "adler", + "simd-adler32", ] [[package]] name = "mio" -version = "0.8.5" +version = "0.8.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e5d732bc30207a6423068df043e3d02e0735b155ad7ce1a6f76fe2baa5b158de" +checksum = "a4a650543ca06a924e8b371db273b2756685faae30f8487da1b56505a8f78b0c" dependencies = [ "libc", "log", "wasi 0.11.0+wasi-snapshot-preview1", - "windows-sys 0.42.0", + "windows-sys 0.48.0", ] [[package]] @@ -1885,7 +2086,7 @@ checksum = "aaa9fddbc34c8c35dd2108515587b8ce0cab396f17977b8c738568e4edb521a2" dependencies = [ "alga", "approx 0.3.2", - "generic-array", + "generic-array 0.12.3", "matrixmultiply 0.2.4", "num-complex 0.2.4", "num-rational 0.2.4", @@ -1983,7 +2184,7 @@ version = "0.6.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2032c77e030ddee34a6787a64166008da93f6a352b629261d0fee232b8742dd4" dependencies = [ - "bitflags", + "bitflags 1.3.2", "jni-sys", "ndk-sys 0.3.0", "num_enum", @@ -1996,11 +2197,11 @@ version = "0.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "451422b7e4718271c8b5b3aadf5adedba43dc76312454b387e98fae0fc951aa0" dependencies = [ - "bitflags", + "bitflags 1.3.2", "jni-sys", - "ndk-sys 0.4.0", + "ndk-sys 0.4.1+23.1.7779620", "num_enum", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", "thiserror", ] @@ -2036,7 +2237,7 @@ dependencies = [ "ndk 0.7.0", "ndk-context", "ndk-macro", - "ndk-sys 0.4.0", + "ndk-sys 0.4.1+23.1.7779620", "once_cell", "parking_lot", ] @@ -2065,9 +2266,9 @@ dependencies = [ [[package]] name = "ndk-sys" -version = "0.4.0" +version = "0.4.1+23.1.7779620" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "21d83ec9c63ec5bf950200a8e508bdad6659972187b625469f58ef8c08e29046" +checksum = "3cf2aae958bd232cac5069850591667ad422d263686d75b52a065f9badeee5a3" dependencies = [ "jni-sys", ] @@ -2078,7 +2279,7 @@ version = "0.22.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e4916f159ed8e5de0082076562152a76b7a1f64a01fd9d1e0fea002c37624faf" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cc", "cfg-if", "libc", @@ -2087,11 +2288,11 @@ dependencies = [ [[package]] name = "nix" -version = "0.24.2" +version = "0.24.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "195cdbc1741b8134346d515b3a56a1c94b0912758009cfd53f99ea0f57b065fc" +checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" dependencies = [ - "bitflags", + "bitflags 1.3.2", "cfg-if", "libc", "memoffset", @@ -2103,16 +2304,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" -[[package]] -name = "nom" -version = "7.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" -dependencies = [ - "memchr", - "minimal-lexical", -] - [[package]] name = "num-complex" version = "0.2.4" @@ -2186,18 +2377,18 @@ dependencies = [ [[package]] name = "num_enum" -version = "0.5.7" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cf5395665662ef45796a4ff5486c5d41d29e0c09640af4c5f17fd94ee2c119c9" +checksum = "1f646caf906c20226733ed5b1374287eb97e3c2a5c227ce668c1f2ce20ae57c9" dependencies = [ "num_enum_derive", ] [[package]] name = "num_enum_derive" -version = "0.5.7" +version = "0.5.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b0498641e53dd6ac1a4f22547548caa6864cc4933784319cd1775271c5a46ce" +checksum = "dcbff9bc912032c62bf65ef1d5aea88983b420f4f839db1e9b0c281a25c9c799" dependencies = [ "proc-macro-crate", "proc-macro2", @@ -2234,19 +2425,28 @@ dependencies = [ "objc", ] +[[package]] +name = "object" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" -version = "1.16.0" +version = "1.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" [[package]] name = "openssl" -version = "0.10.42" +version = "0.10.64" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "12fc0523e3bd51a692c8850d075d74dc062ccf251c0110668cbd921917118a13" +checksum = "95a0481286a310808298130d22dd1fef0fa571e05a8f44ec801801e84b216b1f" dependencies = [ - "bitflags", + "bitflags 2.5.0", "cfg-if", "foreign-types 0.3.2", "libc", @@ -2257,13 +2457,13 @@ dependencies = [ [[package]] name = "openssl-macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" dependencies = [ "proc-macro2", "quote", - "syn 1.0.103", + "syn 2.0.61", ] [[package]] @@ -2274,11 +2474,10 @@ checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" [[package]] name = "openssl-sys" -version = "0.9.77" +version = "0.9.102" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b03b84c3b2d099b81f0953422b4d4ad58761589d0229b5506356afca05a3670a" +checksum = "c597637d56fbc83893a35eb0dd04b2b8e7a50c91e64e9493e398b5df4fb45fa2" dependencies = [ - "autocfg 1.0.1", "cc", "libc", "pkg-config", @@ -2314,9 +2513,9 @@ dependencies = [ [[package]] name = "owned_ttf_parser" -version = "0.17.0" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4665508572151759e8d60404e20dc096ef93a99801a05ac2ac6e43bf5b4ca187" +checksum = "d4586edfe4c648c71797a74c84bacb32b52b212eff5dfe2bb9f2c599844023e7" dependencies = [ "ttf-parser", ] @@ -2335,9 +2534,9 @@ dependencies = [ [[package]] name = "parking_lot" -version = "0.12.1" +version = "0.12.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" dependencies = [ "lock_api", "parking_lot_core", @@ -2345,15 +2544,26 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.4" +version = "0.9.10" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" dependencies = [ "cfg-if", "libc", "redox_syscall", "smallvec", - "windows-sys 0.42.0", + "windows-targets 0.52.5", +] + +[[package]] +name = "password-hash" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7676374caaee8a325c9e7a2ae557f216c5563a171d6997b0ef8a65af35147700" +dependencies = [ + "base64ct", + "rand_core 0.6.4", + "subtle", ] [[package]] @@ -2362,6 +2572,18 @@ version = "1.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d01a5bd0424d00070b0098dd17ebca6f961a959dead1dbcbbbc1d1cd8d3deeba" +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest", + "hmac", + "password-hash", + "sha2", +] + [[package]] name = "pdqselect" version = "0.1.1" @@ -2370,9 +2592,9 @@ checksum = "7778906d9321dd56cde1d1ffa69a73e59dcf5fda6d366f62727adf2bd4193aee" [[package]] name = "percent-encoding" -version = "2.2.0" +version = "2.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" +checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" [[package]] name = "pest" @@ -2385,29 +2607,29 @@ dependencies = [ [[package]] name = "pin-project" -version = "1.0.12" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad29a609b6bcd67fee905812e544992d216af9d755757c05ed2d0e15a74c6ecc" +checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3" dependencies = [ "pin-project-internal", ] [[package]] name = "pin-project-internal" -version = "1.0.12" +version = "1.1.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "069bdb1e05adc7a8990dce9cc75370895fbe4e3d58b9b73bf1aee56359344a55" +checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965" dependencies = [ "proc-macro2", "quote", - "syn 1.0.103", + "syn 2.0.61", ] [[package]] name = "pin-project-lite" -version = "0.2.9" +version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" +checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" [[package]] name = "pin-utils" @@ -2423,14 +2645,15 @@ checksum = "6ac9a59f73473f1b8d852421e59e64809f025994837ef743615c6d0c5b305160" [[package]] name = "png" -version = "0.17.7" +version = "0.17.13" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5d708eaf860a19b19ce538740d2b4bdeeb8337fa53f7738455e706623ad5c638" +checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" dependencies = [ - "bitflags", + "bitflags 1.3.2", "crc32fast", + "fdeflate", "flate2", - "miniz_oxide 0.6.2", + "miniz_oxide 0.7.1", ] [[package]] @@ -2447,29 +2670,37 @@ checksum = "ac74c624d6b2d21f425f752262f42188365d7b8ff1aff74c82e45136510a4857" [[package]] name = "proc-macro-crate" -version = "1.2.1" +version = "1.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919" dependencies = [ "once_cell", - "thiserror", - "toml", + "toml_edit 0.19.15", ] [[package]] name = "proc-macro2" -version = "1.0.52" +version = "1.0.82" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d0e1ae9e836cc3beddd63db0df682593d7e2d3d891ae8c9083d2113e1744224" +checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" dependencies = [ "unicode-ident", ] +[[package]] +name = "qoi" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" +dependencies = [ + "bytemuck", +] + [[package]] name = "quote" -version = "1.0.26" +version = "1.0.36" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4424af4bf778aae2051a77b60283332f386554255d722233d09fbfc7e30da2fc" +checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" dependencies = [ "proc-macro2", ] @@ -2682,12 +2913,9 @@ dependencies = [ [[package]] name = "raw-window-handle" -version = "0.5.0" +version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed7e3d950b66e19e0c372f3fa3fbbcf85b1746b571f74e0c2af6042a5c93420a" -dependencies = [ - "cty", -] +checksum = "f2ff9a1f06a88b01621b7ae906ef0211290d1c8a168a15542486a8f61c0833b9" [[package]] name = "rawpointer" @@ -2728,38 +2956,29 @@ dependencies = [ [[package]] name = "redox_syscall" -version = "0.2.16" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" dependencies = [ - "bitflags", + "bitflags 2.5.0", ] [[package]] name = "redox_users" -version = "0.4.3" +version = "0.4.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" +checksum = "bd283d9651eeda4b2a83a43c1c91b266c40fd76ecd39a50a8c630ae69dc72891" dependencies = [ "getrandom 0.2.8", - "redox_syscall", + "libredox", "thiserror", ] -[[package]] -name = "remove_dir_all" -version = "0.5.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" -dependencies = [ - "winapi", -] - [[package]] name = "reqwest" -version = "0.11.12" +version = "0.11.27" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "431949c384f4e2ae07605ccaa56d1d9d2ecdb5cadd4f9577ccfab29f2e5149fc" +checksum = "dd67538700a17451e7cba03ac727fb961abb7607553461627b97de0b89cf4a62" dependencies = [ "base64", "bytes", @@ -2779,9 +2998,12 @@ dependencies = [ "once_cell", "percent-encoding", "pin-project-lite", + "rustls-pemfile", "serde", "serde_json", "serde_urlencoded", + "sync_wrapper", + "system-configuration", "tokio", "tokio-native-tls", "tower-service", @@ -2809,7 +3031,7 @@ dependencies = [ "objc", "objc-foundation", "objc_id", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", @@ -2818,13 +3040,14 @@ dependencies = [ [[package]] name = "ron" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "300a51053b1cb55c80b7a9fde4120726ddf25ca241a1cbb926626f62fb136bff" +checksum = "b91f7eff05f748767f183df4320a63d6936e9c6107d97c9e6bdd9784f4289c94" dependencies = [ "base64", - "bitflags", + "bitflags 2.5.0", "serde", + "serde_derive", ] [[package]] @@ -2849,6 +3072,12 @@ dependencies = [ "smallvec", ] +[[package]] +name = "rustc-demangle" +version = "0.1.24" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" + [[package]] name = "rustc_version" version = "0.3.3" @@ -2867,6 +3096,28 @@ dependencies = [ "semver 1.0.17", ] +[[package]] +name = "rustix" +version = "0.38.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" +dependencies = [ + "bitflags 2.5.0", + "errno", + "libc", + "linux-raw-sys", + "windows-sys 0.52.0", +] + +[[package]] +name = "rustls-pemfile" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c74cae0a4cf6ccbbf5f359f08efdf8ee7e1dc532573bf0db71968cb56b1448c" +dependencies = [ + "base64", +] + [[package]] name = "ryu" version = "1.0.5" @@ -2902,12 +3153,11 @@ dependencies = [ [[package]] name = "schannel" -version = "0.1.20" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" dependencies = [ - "lazy_static", - "windows-sys 0.36.1", + "windows-sys 0.52.0", ] [[package]] @@ -2916,12 +3166,6 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" -[[package]] -name = "scoped_threadpool" -version = "0.1.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" - [[package]] name = "scopeguard" version = "1.1.0" @@ -2948,11 +3192,11 @@ dependencies = [ [[package]] name = "security-framework" -version = "2.7.0" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2bc1bb97804af6631813c55739f771071e0f2ed33ee20b68c86ec505d906356c" +checksum = "c627723fd09706bacdb5cf41499e95098555af3c3c29d014dc3c458ef6be11c0" dependencies = [ - "bitflags", + "bitflags 2.5.0", "core-foundation", "core-foundation-sys", "libc", @@ -2961,9 +3205,9 @@ dependencies = [ [[package]] name = "security-framework-sys" -version = "2.6.1" +version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +checksum = "317936bbbd05227752583946b9e66d7ce3b489f84e11a94a510b4437fef407d7" dependencies = [ "core-foundation-sys", "libc", @@ -3010,7 +3254,7 @@ checksum = "e801c1712f48475582b7696ac71e0ca34ebb30e09338425384269d9717c62cad" dependencies = [ "proc-macro2", "quote", - "syn 2.0.4", + "syn 2.0.61", ] [[package]] @@ -3024,6 +3268,15 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_spanned" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" +dependencies = [ + "serde", +] + [[package]] name = "serde_urlencoded" version = "0.7.1" @@ -3057,6 +3310,28 @@ dependencies = [ "pkg-config", ] +[[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 = "sha2" +version = "0.10.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" +dependencies = [ + "cfg-if", + "cpufeatures", + "digest", +] + [[package]] name = "shared_library" version = "0.1.9" @@ -3093,20 +3368,26 @@ dependencies = [ "wide", ] +[[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.7" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" dependencies = [ "autocfg 1.0.1", ] [[package]] name = "slotmap" -version = "1.0.6" +version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1e08e261d0e8f5c43123b7adf3e4ca1690d655377ac93a03b2c9d3e98de1342" +checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" dependencies = [ "version_check", ] @@ -3119,17 +3400,17 @@ checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "smithay-client-toolkit" -version = "0.16.0" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f307c47d32d2715eb2e0ece5589057820e0e5e70d07c247d1063e844e107f454" +checksum = "870427e30b8f2cbe64bf43ec4b86e88fe39b0a84b3f15efd9c9c2d020bc86eb9" dependencies = [ - "bitflags", + "bitflags 1.3.2", "calloop", "dlib", "lazy_static", "log", "memmap2", - "nix 0.24.2", + "nix 0.24.3", "pkg-config", "wayland-client", "wayland-cursor", @@ -3148,12 +3429,12 @@ dependencies = [ [[package]] name = "socket2" -version = "0.4.7" +version = "0.5.7" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02e2d2db9033d13a1567121ddd7a095ee144db4e1ca1b1bda3419bc0da294ebd" +checksum = "ce305eb0b4296696835b71df73eb912e0f1ffd2556a501fcede6e0c50349191c" dependencies = [ "libc", - "winapi", + "windows-sys 0.52.0", ] [[package]] @@ -3196,6 +3477,12 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" +[[package]] +name = "subtle" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" + [[package]] name = "syn" version = "1.0.103" @@ -3209,20 +3496,47 @@ dependencies = [ [[package]] name = "syn" -version = "2.0.4" +version = "2.0.61" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2c622ae390c9302e214c31013517c2061ecb2699935882c60a9b37f82f8625ae" +checksum = "c993ed8ccba56ae856363b1845da7266a7cb78e1d146c8a32d54b45a8b831fc9" dependencies = [ "proc-macro2", "quote", "unicode-ident", ] +[[package]] +name = "sync_wrapper" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160" + +[[package]] +name = "system-configuration" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ba3a3adc5c275d719af8cb4272ea1c4a6d668a777f37e115f6d11ddbc1c8e0e7" +dependencies = [ + "bitflags 1.3.2", + "core-foundation", + "system-configuration-sys", +] + +[[package]] +name = "system-configuration-sys" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a75fb188eb626b924683e3b95e3a48e63551fcfb51949de2f06a9d91dbee93c9" +dependencies = [ + "core-foundation-sys", + "libc", +] + [[package]] name = "system-deps" -version = "6.0.3" +version = "6.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" +checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" dependencies = [ "cfg-expr", "heck", @@ -3231,18 +3545,22 @@ dependencies = [ "version-compare", ] +[[package]] +name = "target-lexicon" +version = "0.12.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e1fc403891a21bcfb7c37834ba66a547a8f402146eba7265b5a6d88059c9ff2f" + [[package]] name = "tempfile" -version = "3.3.0" +version = "3.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" dependencies = [ "cfg-if", "fastrand", - "libc", - "redox_syscall", - "remove_dir_all", - "winapi", + "rustix", + "windows-sys 0.52.0", ] [[package]] @@ -3274,20 +3592,11 @@ dependencies = [ "syn 1.0.103", ] -[[package]] -name = "threadpool" -version = "1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d050e60b33d41c19108b32cea32164033a9013fe3b46cbd4457559bfbf77afaa" -dependencies = [ - "num_cpus", -] - [[package]] name = "tiff" -version = "0.7.4" +version = "0.9.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f71e422515e83e3ab8a03d4781d05ebf864fc61f4546e6ecffa58cbd34181a0" +checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" dependencies = [ "flate2", "jpeg-decoder", @@ -3367,32 +3676,30 @@ dependencies = [ [[package]] name = "tinyvec_macros" -version = "0.1.0" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.19.2" +version = "1.37.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c51a52ed6686dd62c320f9b89299e9dfb46f730c7a48e635c19f21d116cb1439" +checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" dependencies = [ + "backtrace", "bytes", "libc", - "memchr", "mio", - "num_cpus", - "once_cell", "pin-project-lite", "socket2", - "winapi", + "windows-sys 0.48.0", ] [[package]] name = "tokio-native-tls" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" dependencies = [ "native-tls", "tokio", @@ -3400,25 +3707,60 @@ dependencies = [ [[package]] name = "tokio-util" -version = "0.7.3" +version = "0.7.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +checksum = "9cf6b47b3771c49ac75ad09a6162f53ad4b8088b76ac60e8ec1455b31a189fe1" dependencies = [ "bytes", "futures-core", "futures-sink", "pin-project-lite", "tokio", - "tracing", ] [[package]] name = "toml" -version = "0.5.9" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" +dependencies = [ + "serde", + "serde_spanned", + "toml_datetime", + "toml_edit 0.22.12", +] + +[[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 = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +checksum = "1b5bb770da30e5cbfde35a2d7b9b8a2c4b8ef89548a7a6aeab5c9a576e3e7421" dependencies = [ + "indexmap", + "toml_datetime", + "winnow 0.5.40", +] + +[[package]] +name = "toml_edit" +version = "0.22.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" +dependencies = [ + "indexmap", "serde", + "serde_spanned", + "toml_datetime", + "winnow 0.6.8", ] [[package]] @@ -3429,29 +3771,28 @@ checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" [[package]] name = "tracing" -version = "0.1.37" +version = "0.1.40" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ce8c33a8d48bd45d624a6e523445fd21ec13d3653cd51f681abf67418f54eb8" +checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" dependencies = [ - "cfg-if", "pin-project-lite", "tracing-core", ] [[package]] name = "tracing-core" -version = "0.1.30" +version = "0.1.32" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24eb03ba0eab1fd845050058ce5e616558e8f8d8fca633e6b163fe25c797213a" +checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" dependencies = [ "once_cell", ] [[package]] name = "try-lock" -version = "0.2.3" +version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" +checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" [[package]] name = "tsp-rs" @@ -3464,9 +3805,9 @@ dependencies = [ [[package]] name = "ttf-parser" -version = "0.17.1" +version = "0.20.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" +checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" [[package]] name = "typenum" @@ -3482,9 +3823,9 @@ checksum = "56dee185309b50d1f11bfedef0fe6d036842e3fb77413abef29f8f8d1c5d4c1c" [[package]] name = "unicode-bidi" -version = "0.3.8" +version = "0.3.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" +checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" [[package]] name = "unicode-ident" @@ -3494,9 +3835,9 @@ checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "unicode-normalization" -version = "0.1.22" +version = "0.1.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" dependencies = [ "tinyvec", ] @@ -3509,9 +3850,9 @@ checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" [[package]] name = "url" -version = "2.3.1" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" dependencies = [ "form_urlencoded", "idna", @@ -3538,9 +3879,9 @@ checksum = "f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191" [[package]] name = "version-compare" -version = "0.1.0" +version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" +checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" [[package]] name = "version_check" @@ -3550,22 +3891,20 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "walkdir" -version = "2.3.2" +version = "2.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "808cf2735cd4b6866113f648b791c6adc5714537bc222d9347bb203386ffda56" +checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" dependencies = [ "same-file", - "winapi", "winapi-util", ] [[package]] name = "want" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" dependencies = [ - "log", "try-lock", ] @@ -3589,9 +3928,9 @@ checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" [[package]] name = "wasm-bindgen" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" dependencies = [ "cfg-if", "wasm-bindgen-macro", @@ -3599,24 +3938,24 @@ dependencies = [ [[package]] name = "wasm-bindgen-backend" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" dependencies = [ "bumpalo", "log", "once_cell", "proc-macro2", "quote", - "syn 1.0.103", + "syn 2.0.61", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-futures" -version = "0.4.33" +version = "0.4.42" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23639446165ca5a5de86ae1d8896b737ae80319560fbaa4c2887b7da6e7ebd7d" +checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" dependencies = [ "cfg-if", "js-sys", @@ -3626,9 +3965,9 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" dependencies = [ "quote", "wasm-bindgen-macro-support", @@ -3636,22 +3975,22 @@ dependencies = [ [[package]] name = "wasm-bindgen-macro-support" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" dependencies = [ "proc-macro2", "quote", - "syn 1.0.103", + "syn 2.0.61", "wasm-bindgen-backend", "wasm-bindgen-shared", ] [[package]] name = "wasm-bindgen-shared" -version = "0.2.83" +version = "0.2.92" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" +checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" [[package]] name = "wayland-client" @@ -3659,10 +3998,10 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f3b068c05a039c9f755f881dc50f01732214f5685e379829759088967c46715" dependencies = [ - "bitflags", + "bitflags 1.3.2", "downcast-rs", "libc", - "nix 0.24.2", + "nix 0.24.3", "scoped-tls", "wayland-commons", "wayland-scanner", @@ -3675,7 +4014,7 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8691f134d584a33a6606d9d717b95c4fa20065605f798a3f350d78dced02a902" dependencies = [ - "nix 0.24.2", + "nix 0.24.3", "once_cell", "smallvec", "wayland-sys", @@ -3687,7 +4026,7 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6865c6b66f13d6257bef1cd40cbfe8ef2f150fb8ebbdb1e8e873455931377661" dependencies = [ - "nix 0.24.2", + "nix 0.24.3", "wayland-client", "xcursor", ] @@ -3708,7 +4047,7 @@ version = "0.29.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b950621f9354b322ee817a23474e479b34be96c2e909c14f7bc0100e9a970bc6" dependencies = [ - "bitflags", + "bitflags 1.3.2", "wayland-client", "wayland-commons", "wayland-scanner", @@ -3738,9 +4077,9 @@ dependencies = [ [[package]] name = "web-sys" -version = "0.3.60" +version = "0.3.69" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bcda906d8be16e728fd5adc5b729afad4e444e106ab28cd1c7256e54fa61510f" +checksum = "77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef" dependencies = [ "js-sys", "wasm-bindgen", @@ -3762,25 +4101,26 @@ dependencies = [ [[package]] name = "webbrowser" -version = "0.8.2" +version = "0.8.15" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2a0cc7962b5aaa0dfcebaeef0161eec6edf5f4606c12e6777fd7d392f52033a5" +checksum = "db67ae75a9405634f5882791678772c94ff5f16a66535aae186e26aa0841fc8b" dependencies = [ - "jni 0.20.0", + "core-foundation", + "home", + "jni 0.21.1", + "log", "ndk-context", "objc", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", "url", "web-sys", - "widestring", - "winapi", ] [[package]] name = "weezl" -version = "0.1.7" +version = "0.1.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9193164d4de03a926d909d3bc7c30543cecb35400c02114792c2cae20d5e2dbb" +checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" [[package]] name = "whitebox_common" @@ -3812,7 +4152,7 @@ dependencies = [ [[package]] name = "whitebox_plugins" -version = "2.3.0" +version = "2.4.0" dependencies = [ "evalexpr", "fasteval", @@ -3846,7 +4186,7 @@ dependencies = [ [[package]] name = "whitebox_runner" -version = "2.0.0" +version = "2.1.0" dependencies = [ "anyhow", "case", @@ -3859,14 +4199,14 @@ dependencies = [ "rfd", "serde", "serde_json", - "webbrowser 0.8.2", + "webbrowser 0.8.15", "whitebox_vector", "zip-extract", ] [[package]] name = "whitebox_tools" -version = "2.3.0" +version = "2.4.0" dependencies = [ "byteorder", "chrono", @@ -3943,9 +4283,9 @@ dependencies = [ [[package]] name = "winapi-wsapoll" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44c17110f57155602a80dca10be03852116403c9ff3cd25b079d666f2aa3df6e" +checksum = "1eafc5f679c576995526e81635d0cf9695841736712b4e892f87abbe6fed3f28" dependencies = [ "winapi", ] @@ -3984,24 +4324,94 @@ dependencies = [ [[package]] name = "windows-sys" -version = "0.42.0" +version = "0.45.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" dependencies = [ - "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", - "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "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.5", +] + +[[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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" +dependencies = [ + "windows_aarch64_gnullvm 0.52.5", + "windows_aarch64_msvc 0.52.5", + "windows_i686_gnu 0.52.5", + "windows_i686_gnullvm", + "windows_i686_msvc 0.52.5", + "windows_x86_64_gnu 0.52.5", + "windows_x86_64_gnullvm 0.52.5", + "windows_x86_64_msvc 0.52.5", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" [[package]] name = "windows_aarch64_msvc" @@ -4017,9 +4427,21 @@ checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +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 = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" [[package]] name = "windows_i686_gnu" @@ -4035,9 +4457,27 @@ checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +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.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" + +[[package]] +name = "windows_i686_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" [[package]] name = "windows_i686_msvc" @@ -4053,9 +4493,21 @@ checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" [[package]] name = "windows_x86_64_gnu" @@ -4071,15 +4523,39 @@ checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" + +[[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.42.0" +version = "0.48.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.52.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" [[package]] name = "windows_x86_64_msvc" @@ -4095,9 +4571,21 @@ checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +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.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" [[package]] name = "winit" @@ -4105,10 +4593,10 @@ version = "0.27.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bb796d6fbd86b2fd896c9471e6f04d39d750076ebe5680a3958f00f5ab97657c" dependencies = [ - "bitflags", - "cocoa", + "bitflags 1.3.2", + "cocoa 0.24.1", "core-foundation", - "core-graphics", + "core-graphics 0.22.3", "dispatch", "instant", "libc", @@ -4121,7 +4609,7 @@ dependencies = [ "parking_lot", "percent-encoding", "raw-window-handle 0.4.3", - "raw-window-handle 0.5.0", + "raw-window-handle 0.5.2", "sctk-adwaita", "smithay-client-toolkit", "wasm-bindgen", @@ -4132,13 +4620,32 @@ dependencies = [ "x11-dl", ] +[[package]] +name = "winnow" +version = "0.5.40" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" +dependencies = [ + "memchr", +] + +[[package]] +name = "winnow" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" +dependencies = [ + "memchr", +] + [[package]] name = "winreg" -version = "0.10.1" +version = "0.50.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +checksum = "524e57b2c537c0f9b1e69f1965311ec12182b4122e45035b1508cd24d2adadb1" dependencies = [ - "winapi", + "cfg-if", + "windows-sys 0.48.0", ] [[package]] @@ -4161,12 +4668,12 @@ dependencies = [ [[package]] name = "x11-dl" -version = "2.20.0" +version = "2.21.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0c83627bc137605acc00bb399c7b908ef460b621fc37c953db2b09f88c449ea6" +checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" dependencies = [ - "lazy_static", "libc", + "once_cell", "pkg-config", ] @@ -4189,7 +4696,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "592b4883219f345e712b3209c62654ebda0bb50887f330cbd018d0f654bfd507" dependencies = [ "gethostname", - "nix 0.24.2", + "nix 0.24.3", "winapi", "winapi-wsapoll", "x11rb-protocol", @@ -4201,23 +4708,40 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "56b245751c0ac9db0e006dc812031482784e434630205a93c73cfefcaabeac67" dependencies = [ - "nix 0.24.2", + "nix 0.24.3", ] [[package]] name = "xcursor" -version = "0.3.4" +version = "0.3.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" + +[[package]] +name = "xml-rs" +version = "0.8.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" + +[[package]] +name = "zerocopy" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "463705a63313cd4301184381c5e8042f0a7e9b4bb63653f216311d4ae74690b7" +checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" dependencies = [ - "nom", + "zerocopy-derive", ] [[package]] -name = "xml-rs" -version = "0.8.4" +name = "zerocopy-derive" +version = "0.7.34" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2d7d3948613f75c98fd9328cfdcc45acc4d360655289d0a7d4ec931392200a3" +checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.61", +] [[package]] name = "zip" @@ -4234,25 +4758,68 @@ dependencies = [ [[package]] name = "zip" -version = "0.5.13" +version = "0.6.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ab48844d61251bb3835145c521d88aa4031d7139e8485990f60ca911fa0815" +checksum = "760394e246e4c28189f19d488c058bf16f564016aefac5d32bb1f3b51d5e9261" dependencies = [ + "aes", "byteorder", - "bzip2 0.4.3", + "bzip2 0.4.4", + "constant_time_eq", "crc32fast", + "crossbeam-utils", "flate2", - "thiserror", - "time 0.1.44", + "hmac", + "pbkdf2", + "sha1", + "zstd", ] [[package]] name = "zip-extract" -version = "0.1.1" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4c5cc0309f6e81ab96c2b43d5e935025f8732c886690be8f78f68e06bad1d274" +checksum = "e109e5a291403b4c1e514d39f8a22d3f98d257e691a52bb1f16051bb1ffed63e" dependencies = [ "log", "thiserror", - "zip 0.5.13", + "zip 0.6.6", +] + +[[package]] +name = "zstd" +version = "0.11.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" +dependencies = [ + "zstd-safe", +] + +[[package]] +name = "zstd-safe" +version = "5.0.2+zstd.1.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" +dependencies = [ + "libc", + "zstd-sys", +] + +[[package]] +name = "zstd-sys" +version = "2.0.10+zstd.1.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c253a4914af5bafc8fa8c86ee400827e83cf6ec01195ec1f1ed8441bf00d65aa" +dependencies = [ + "cc", + "pkg-config", +] + +[[package]] +name = "zune-inflate" +version = "0.2.54" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" +dependencies = [ + "simd-adler32", ] diff --git a/build.py b/build.py index 17319d09..f20e9118 100755 --- a/build.py +++ b/build.py @@ -6,7 +6,7 @@ # # python3 build.py do_clean # -# Where 'do_clean' is true or false and determines whether or not to clean existing files first. +# Where 'do_clean' is true or false and determines whether or not to clean existing files first. # # You will need Rust installed before running the script. The output will be contained within a # folder named 'WBT'. @@ -42,9 +42,6 @@ result = subprocess.run(['cargo', 'build', "--release", "--target=x86_64-unknown-linux-musl"], stdout=subprocess.PIPE) if len(result.stdout) > 0: print(result.stdout) -# result = subprocess.run(['cargo', 'build', '--release'], stdout=subprocess.PIPE) -# if len(result.stdout) > 0: -# print(result.stdout) if not os.path.exists(output_plugin_dir): os.makedirs(output_plugin_dir) @@ -78,7 +75,38 @@ dst = os.path.join(output_dir, 'UserManual.txt') copyfile(src, dst) -# Copy the Runner app +# if len(sys.argv) > 2: +# if "t" in sys.argv[2].lower(): +# # Compile the Runner app +# runner_dir = os.path.join(app_dir, 'whitebox-runner') +# os.chdir(runner_dir) +# if platform.system() != 'Linux': +# result = subprocess.run(['cargo', 'build', "--release"], stdout=subprocess.PIPE) +# if len(result.stdout) > 0: +# print(result.stdout) +# else: +# print("Compiling for musl target...") +# result = subprocess.run(['cargo', 'build', "--release", "--target=x86_64-unknown-linux-musl"], stdout=subprocess.PIPE) +# if len(result.stdout) > 0: +# print(result.stdout) + + +# # Copy the Runner app +# runner_target_dir = os.path.join(runner_dir, 'target/release') +# if platform.system() == "Linux": +# runner_target_dir = os.path.join(runner_dir, 'target/x86_64-unknown-linux-musl/release') + +# exe_file = os.path.join(runner_target_dir, 'whitebox_runner') + ext +# dst = os.path.join(output_dir, 'whitebox_runner') + ext +# copyfile(exe_file, dst) +# if platform.system() != 'Windows': +# result = subprocess.run(['strip', dst], stdout=subprocess.PIPE) +# os.system("chmod 755 " + dst) # grant executable + +# # Return to the app_dir +# os.chdir(app_dir) + + # Copy the Runner app exe_file = os.path.join(target_dir, 'whitebox_runner') + ext dst = os.path.join(output_dir, 'whitebox_runner') + ext copyfile(exe_file, dst) diff --git a/doc_img/ConvergenceIndex.png b/doc_img/ConvergenceIndex.png new file mode 100644 index 00000000..c4b19188 Binary files /dev/null and b/doc_img/ConvergenceIndex.png differ diff --git a/doc_img/average_horizon_distance_10cm.png b/doc_img/average_horizon_distance_10cm.png new file mode 100644 index 00000000..11879ac5 Binary files /dev/null and b/doc_img/average_horizon_distance_10cm.png differ diff --git a/doc_img/average_horizon_distance_170cm.png b/doc_img/average_horizon_distance_170cm.png new file mode 100644 index 00000000..c0395ff9 Binary files /dev/null and b/doc_img/average_horizon_distance_170cm.png differ diff --git a/doc_img/average_horizon_distance_grd_level.png b/doc_img/average_horizon_distance_grd_level.png new file mode 100644 index 00000000..cd80d1ac Binary files /dev/null and b/doc_img/average_horizon_distance_grd_level.png differ diff --git a/doc_img/avgerage_horizon_distance.png b/doc_img/avgerage_horizon_distance.png new file mode 100644 index 00000000..06d69f9c Binary files /dev/null and b/doc_img/avgerage_horizon_distance.png differ diff --git a/doc_img/horizon_area.png b/doc_img/horizon_area.png new file mode 100644 index 00000000..f8ebe34e Binary files /dev/null and b/doc_img/horizon_area.png differ diff --git a/doc_img/horizon_area_15cm.png b/doc_img/horizon_area_15cm.png new file mode 100644 index 00000000..c2aa5661 Binary files /dev/null and b/doc_img/horizon_area_15cm.png differ diff --git a/doc_img/horizon_area_170cm.png b/doc_img/horizon_area_170cm.png new file mode 100644 index 00000000..965e9b4c Binary files /dev/null and b/doc_img/horizon_area_170cm.png differ diff --git a/doc_img/horizon_area_grd_level.png b/doc_img/horizon_area_grd_level.png new file mode 100644 index 00000000..ae0aab32 Binary files /dev/null and b/doc_img/horizon_area_grd_level.png differ diff --git a/doc_img/improved_ground_point_filter1.png b/doc_img/improved_ground_point_filter1.png new file mode 100644 index 00000000..8f36abae Binary files /dev/null and b/doc_img/improved_ground_point_filter1.png differ diff --git a/doc_img/improved_ground_point_filter2.png b/doc_img/improved_ground_point_filter2.png new file mode 100644 index 00000000..36530c36 Binary files /dev/null and b/doc_img/improved_ground_point_filter2.png differ diff --git a/doc_img/improved_ground_point_filter3.png b/doc_img/improved_ground_point_filter3.png new file mode 100644 index 00000000..ed90c69a Binary files /dev/null and b/doc_img/improved_ground_point_filter3.png differ diff --git a/doc_img/sky_view_factor.png b/doc_img/sky_view_factor.png new file mode 100644 index 00000000..864de61b Binary files /dev/null and b/doc_img/sky_view_factor.png differ diff --git a/doc_img/sky_view_factor_10cm.png b/doc_img/sky_view_factor_10cm.png new file mode 100644 index 00000000..d1ff8ce4 Binary files /dev/null and b/doc_img/sky_view_factor_10cm.png differ diff --git a/doc_img/sky_view_factor_170cm.png b/doc_img/sky_view_factor_170cm.png new file mode 100644 index 00000000..6636cd02 Binary files /dev/null and b/doc_img/sky_view_factor_170cm.png differ diff --git a/doc_img/sky_view_factor_grd_level.png b/doc_img/sky_view_factor_grd_level.png new file mode 100644 index 00000000..3fb3a529 Binary files /dev/null and b/doc_img/sky_view_factor_grd_level.png differ diff --git a/doc_img/skyline_analysis1.png b/doc_img/skyline_analysis1.png new file mode 100644 index 00000000..21baeadf Binary files /dev/null and b/doc_img/skyline_analysis1.png differ diff --git a/doc_img/skyline_analysis2.png b/doc_img/skyline_analysis2.png new file mode 100644 index 00000000..2de9badc Binary files /dev/null and b/doc_img/skyline_analysis2.png differ diff --git a/readme.txt b/readme.txt index 2b1d7a08..ffb2ce9a 100755 --- a/readme.txt +++ b/readme.txt @@ -56,7 +56,7 @@ for more details. * Release Notes: * ****************** -Version 2.4.0 (xx-xx-20xx) +Version 2.4.0 (17-05-2024) - Removed the requirement for an input DEM in the VectorStreamNetworkAnalysis tool. - Fixed a bug in the RepairStreamVectorTopology tool that reversed the direction of some stream arcs. - Added the CorrectStreamVectorDirection tool. @@ -69,6 +69,7 @@ Version 2.4.0 (xx-xx-20xx) - Fixed a bug with polygon holes in the RasterToVectorPolygons tool. - Fixed a bug with the IndividualTreeDetection tool that prevented use of the min_height parameter when applied in batch mode. +- Added the ConvergenceIndex tool. Version 2.3.0 (28-03-2023) - Added the new Whitebox Runner v2.0. This version of WbRunner is an entirely new application with many diff --git a/whitebox-common/src/plugins.rs b/whitebox-common/src/plugins.rs index a73eb417..d5b67d47 100755 --- a/whitebox-common/src/plugins.rs +++ b/whitebox-common/src/plugins.rs @@ -23,7 +23,7 @@ impl From for InvocationError { } #[derive(Copy, Clone)] -#[warn(improper_ctypes_definitions)] +#[allow(improper_ctypes_definitions)] pub struct PluginDeclaration { pub rustc_version: &'static str, pub core_version: &'static str, diff --git a/whitebox-common/src/structures/polyline.rs b/whitebox-common/src/structures/polyline.rs index 5cc58678..c3be520e 100755 --- a/whitebox-common/src/structures/polyline.rs +++ b/whitebox-common/src/structures/polyline.rs @@ -116,7 +116,7 @@ impl Polyline { /// Creates a new Polyline from vertices pub fn new(vertices: &[Point2D], id: usize) -> Polyline { Polyline { - vertices: vertices.clone().to_vec(), + vertices: vertices.to_vec(), source_file: 0, id: id, split_points: vec![], diff --git a/whitebox-lidar/.DS_Store b/whitebox-lidar/.DS_Store index 551d0cc9..d27c0628 100644 Binary files a/whitebox-lidar/.DS_Store and b/whitebox-lidar/.DS_Store differ diff --git a/whitebox-plugins/.DS_Store b/whitebox-plugins/.DS_Store index 6de47b3a..0258cee3 100755 Binary files a/whitebox-plugins/.DS_Store and b/whitebox-plugins/.DS_Store differ diff --git a/whitebox-plugins/Cargo.toml b/whitebox-plugins/Cargo.toml index 03765f5a..41b63e0e 100755 --- a/whitebox-plugins/Cargo.toml +++ b/whitebox-plugins/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "whitebox_plugins" -version = "2.3.0" +version = "2.4.0" authors = ["John Lindsay "] edition = "2021" @@ -12,6 +12,10 @@ path = "src/conditional_evaluation/main.rs" name = "conditioned_latin_hypercube" path = "src/conditioned_latin_hypercube/main.rs" +[[bin]] +name = "convergence_index" +path = "src/convergence_index/main.rs" + [[bin]] name = "correct_stream_vector_direction" path = "src/correct_stream_vector_direction/main.rs" diff --git a/whitebox-plugins/src/convergence_index/convergence_index.json b/whitebox-plugins/src/convergence_index/convergence_index.json new file mode 100755 index 00000000..1284c3cc --- /dev/null +++ b/whitebox-plugins/src/convergence_index/convergence_index.json @@ -0,0 +1,34 @@ +{ + "tool_name": "ConvergenceIndex", + "exe": "convergence_index", + "short_description": "Calculates Qin et al. (2007) flow accumulation.", + "toolbox": "Geomorphometric Analysis", + "license": "MIT", + "example": ".*EXE_NAME -r=ConvergenceIndex --dem=DEM.tif --output=convergence.tif --z_factor=1.0", + "parameters": [ + { + "name": "Input DEM Raster", + "flags": ["-d", "--dem"], + "description": "Name of the input DEM raster file; must be depressionless.", + "parameter_type": {"ExistingFile":"Raster"}, + "default_value": null, + "optional": false + }, + { + "name": "Output Raster File", + "flags": ["--output"], + "description": "Name of the output raster file.", + "parameter_type": {"NewFile":"Raster"}, + "default_value": null, + "optional": false + }, + { + "name": "Z Conversion Factor", + "flags": ["--zfactor"], + "description": "Optional multiplier for when the vertical and horizontal units are not the same.", + "parameter_type": "Float", + "default_value": "", + "optional": true + } + ] +} \ No newline at end of file diff --git a/whitebox-plugins/src/convergence_index/main.rs b/whitebox-plugins/src/convergence_index/main.rs new file mode 100755 index 00000000..9fbfe76f --- /dev/null +++ b/whitebox-plugins/src/convergence_index/main.rs @@ -0,0 +1,525 @@ +/* +Authors: Dr. John Lindsay +Created: 08/05/2024 +Last Modified: 08/05/2024 +License: MIT +*/ + +use std::env; +use std::f64; +use std::io::{Error, ErrorKind}; +use std::path; +use std::str; +use std::time::Instant; +use std::sync::mpsc; +use std::sync::Arc; +use std::thread; +use num_cpus; +use whitebox_common::utils::{ + get_formatted_elapsed_time, + haversine_distance, + vincenty_distance +}; +use whitebox_raster::*; + +/// This tool calculates the convergence index (C), described by Koethe and Lehmeier (1996) and Kiss (2004), for each grid cell +/// in an input digital elevation model (DEM). The convergence index measures the average amount by which the aspect value +/// of each of the eight neighbours in a 3x3 kernel deviates from an aspect aligned with the direction towards +/// the center cell. As such the index measures the degree to which the surrounding topography converges on the center cell. +/// +/// C = 1 / 8 Σ|Φ - Az0| - 90 +/// +/// Where Φ is the aspect of a neighbour of the center cell and Az0 is the azimuth +/// from the neighbour directed towards the center cell. Note, -90 < C < 90, where highly convergent areas have +/// values near -90 and highly divergent areas have values near 90. Therefore, in actuality, C is more properly +/// an index of divergence rather than a convergence index, despite its name. +/// +/// ![](../../doc_img/ConvergenceIndex.png) +/// +/// The user must specify the name of the input DEM (`dem`) and the +/// output raster (`output`). The Z conversion factor (`zfactor`) is only important when the vertical and +/// horizontal units are not the same in the DEM, and the DEM is in a projected coordinate system. When this is the case, the algorithm will multiply each elevation +/// in the DEM by the Z Conversion Factor to perform the unit conversion. +/// +/// For DEMs in projected coordinate systems, the tool uses the 3rd-order bivariate +/// Taylor polynomial method described by Florinsky (2016). Based on a polynomial fit +/// of the elevations within the 5x5 neighbourhood surrounding each cell, this method is considered more +/// robust against outlier elevations (noise) than other methods. For DEMs in geographic coordinate systems +/// (i.e. angular units), the tool uses the 3x3 polynomial fitting method for equal angle grids also +/// described by Florinsky (2016). +/// +/// # Reference +/// Florinsky, I. (2016). Digital terrain analysis in soil science and geology. Academic Press. +/// +/// Kiss, R. (2004). Determination of drainage network in digital elevation models, utilities and +/// limitations. Journal of Hungarian geomathematics, 2, 17-29. +/// +/// Koethe, R. and Lehmeier, F. (1996): SARA - System zur Automatischen Relief-Analyse. User Manual, +/// 2. Edition [Dept. of Geography, University of Goettingen, unpublished] +/// +/// # See Also +/// `Aspect` +fn main() { + let args: Vec = env::args().collect(); + + if args[1].trim() == "run" { + match run(&args) { + Ok(_) => {} + Err(e) => panic!("{:?}", e), + } + } + + if args.len() <= 1 || args[1].trim() == "help" { + // print help + help(); + } + + if args[1].trim() == "version" { + // print version information + version(); + } +} + +fn help() { + let mut ext = ""; + if cfg!(target_os = "windows") { + ext = ".exe"; + } + + let exe_name = &format!("convergence_index{}", ext); + let sep: String = path::MAIN_SEPARATOR.to_string(); + let s = r#" + convergence_index Help + + This tool is used to generate a flow accumulation grid (i.e. contributing area) using the Qin et al. (2007) + flow algorithm. + + The following commands are recognized: + help Prints help information. + run Runs the tool. + version Prints the tool version information. + + The following flags can be used with the 'run' command: + -d, --dem Name of the input DEM raster file; must be depressionless. + --output Name of the output raster file. + --z_factor Optional multiplier for when the vertical and horizontal units are not the same. + + Input/output file names can be fully qualified, or can rely on the working directory contained in + the WhiteboxTools settings.json file. + + Example Usage: + >> .*EXE_NAME run --dem=DEM.tif --output=convergence.tif --z_factor=1.0 + + "# + .replace("*", &sep) + .replace("EXE_NAME", exe_name); + println!("{}", s); +} + +fn version() { + const VERSION: Option<&'static str> = option_env!("CARGO_PKG_VERSION"); + println!( + "convergence_index v{} by Dr. John B. Lindsay (c) 2021.", + VERSION.unwrap_or("Unknown version") + ); +} + +fn get_tool_name() -> String { + String::from("ConvergenceIndex") // This should be camel case and is a reference to the tool name. +} + +fn run(args: &Vec) -> Result<(), std::io::Error> { + let tool_name = get_tool_name(); + + let sep: String = path::MAIN_SEPARATOR.to_string(); + + // Read in the environment variables and get the necessary values + let configurations = whitebox_common::configs::get_configs()?; + let mut working_directory = configurations.working_directory.clone(); + if !working_directory.is_empty() && !working_directory.ends_with(&sep) { + working_directory += &sep; + } + + // read the arguments + let mut dem_file = String::new(); + let mut output_file: String = String::new(); + let mut z_factor = 1f64; + + if args.len() <= 1 { + return Err(Error::new( + ErrorKind::InvalidInput, + "Tool run with too few parameters.", + )); + } + for i in 0..args.len() { + let mut arg = args[i].replace("\"", ""); + arg = arg.replace("\'", ""); + let cmd = arg.split("="); // in case an equals sign was used + let vec = cmd.collect::>(); + let mut keyval = false; + if vec.len() > 1 { + keyval = true; + } + let flag_val = vec[0].to_lowercase().replace("--", "-"); + if flag_val == "-d" || flag_val == "-dem" { + dem_file = if keyval { + vec[1].to_string() + } else { + args[i + 1].to_string() + }; + } else if flag_val == "-output" { + output_file = if keyval { + vec[1].to_string() + } else { + args[i + 1].to_string() + }; + } else if flag_val == "-zfactor" { + z_factor = if keyval { + vec[1] + .to_string() + .parse::() + .expect(&format!("Error parsing {}", flag_val)) + } else { + args[i + 1] + .to_string() + .parse::() + .expect(&format!("Error parsing {}", flag_val)) + }; + } + } + + if configurations.verbose_mode { + let welcome_len = format!("* Welcome to {} *", tool_name).len().max(28); + // 28 = length of the 'Powered by' by statement. + println!("{}", "*".repeat(welcome_len)); + println!("* Welcome to {} {}*", tool_name, " ".repeat(welcome_len - 15 - tool_name.len())); + println!("* Powered by WhiteboxTools {}*", " ".repeat(welcome_len - 28)); + println!("* www.whiteboxgeo.com {}*", " ".repeat(welcome_len - 23)); + println!("{}", "*".repeat(welcome_len)); + } + + let mut progress: usize; + let mut old_progress: usize = 1; + + let start = Instant::now(); + + if !dem_file.contains(&sep) && !dem_file.contains("/") { + dem_file = format!("{}{}", working_directory, dem_file); + } + if !output_file.contains(&sep) && !output_file.contains("/") { + output_file = format!("{}{}", working_directory, output_file); + } + + let mut num_procs = num_cpus::get() as isize; + let max_procs = configurations.max_procs; + if max_procs > 0 && max_procs < num_procs { + num_procs = max_procs; + } + + ///////////////////////////////////////////////////// + // Read in the DEM and create a D8 pointer from it // + ///////////////////////////////////////////////////// + let input = Arc::new(Raster::new(&dem_file, "r")?); + let rows = input.configs.rows as isize; + let columns = input.configs.columns as isize; + let nodata = input.configs.nodata; + let resx = input.configs.resolution_x; + let resy = input.configs.resolution_y; + let res = (resx + resy) / 2.; + + // println!("{rows}, {columns}, {nodata}, {resx}, {resy}, {res}"); + + let (tx, rx) = mpsc::channel(); + if !input.is_in_geographic_coordinates() { + for tid in 0..num_procs { + let input = input.clone(); + let tx = tx.clone(); + thread::spawn(move || { + let mut z12: f64; + let mut p: f64; + let mut q: f64; + let mut sign_p: f64; + let mut sign_q: f64; + const PI: f64 = std::f64::consts::PI; + let offsets = [ + [-2, -2], [-1, -2], [0, -2], [1, -2], [2, -2], + [-2, -1], [-1, -1], [0, -1], [1, -1], [2, -1], + [-2, 0], [-1, 0], [0, 0], [1, 0], [2, 0], + [-2, 1], [-1, 1], [0, 1], [1, 1], [2, 1], + [-2, 2], [-1, 2], [0, 2], [1, 2], [2, 2] + ]; + let mut z = [0f64; 25]; + for row in (0..rows).filter(|r| r % num_procs == tid) { + let mut data = vec![nodata; columns as usize]; + for col in 0..columns { + z12 = input.get_value(row, col); + if z12 != nodata { + for n in 0..25 { + z[n] = input.get_value(row + offsets[n][1], col + offsets[n][0]); + if z[n] != nodata { + z[n] *= z_factor; + } else { + z[n] = z12 * z_factor; + } + } + + /* + The following equations have been taken from Florinsky (2016) Principles and Methods + of Digital Terrain Modelling, Chapter 4, pg. 117. + */ + p = 1. / (420. * res) * (44. * (z[3] + z[23] - z[1] - z[21]) + 31. * (z[0] + z[20] - z[4] - z[24] + + 2. * (z[8] + z[18] - z[6] - z[16])) + 17. * (z[14] - z[10] + 4. * (z[13] - z[11])) + + 5. * (z[9] + z[19] - z[5] - z[15])); + + q = 1. / (420. * res) * (44. * (z[5] + z[9] - z[15] - z[19]) + 31. * (z[20] + z[24] - z[0] - z[4] + + 2. * (z[6] + z[8] - z[16] - z[18])) + 17. * (z[2] - z[22] + 4. * (z[7] - z[17])) + + 5. * (z[1] + z[3] - z[21] - z[23])); + + if p != 0f64 { // slope is greater than zero + // data[col as usize] = 180f64 - (q / p).atan().to_degrees() + 90f64 * (p / p.abs()); + sign_p = if p != 0. { p.signum() } else { 0. }; + sign_q = if q != 0. { q.signum() } else { 0. }; + data[col as usize] = -90.*(1. - sign_q)*(1. - sign_p.abs()) + 180.*(1. + sign_p) - 180. / PI * sign_p * (-q / (p*p + q*q).sqrt()).acos(); + } else { + data[col as usize] = -1f64; // undefined for flat surfaces + } + } + } + + tx.send((row, data)).unwrap(); + } + }); + } + } else { // geographic coordinates + + let phi1 = input.get_y_from_row(0); + let lambda1 = input.get_x_from_column(0); + + let phi2 = phi1; + let lambda2 = input.get_x_from_column(-1); + + let linear_res = vincenty_distance((phi1, lambda1), (phi2, lambda2)); + let lr2 = haversine_distance((phi1, lambda1), (phi2, lambda2)); + let diff = 100. * (linear_res - lr2).abs() / linear_res; + let use_haversine = diff < 0.5; // if the difference is less than 0.5%, use the faster haversine method to calculate distances. + + for tid in 0..num_procs { + let input = input.clone(); + let tx = tx.clone(); + thread::spawn(move || { + let mut z4: f64; + let mut p: f64; + let mut q: f64; + let mut a: f64; + let mut b: f64; + let mut c: f64; + let mut d: f64; + let mut e: f64; + let mut phi1: f64; + let mut lambda1: f64; + let mut phi2: f64; + let mut lambda2: f64; + let offsets = [ + [-1, -1], [0, -1], [1, -1], + [-1, 0], [0, 0], [1, 0], + [-1, 1], [0, 1], [1, 1] + ]; + let mut z = [0f64; 25]; + for row in (0..rows).filter(|r| r % num_procs == tid) { + let mut data = vec![nodata; columns as usize]; + for col in 0..columns { + z4 = input.get_value(row, col); + if z4 != nodata { + for n in 0..9 { + z[n] = input.get_value(row + offsets[n][1], col + offsets[n][0]); + if z[n] != nodata { + z[n] *= z_factor; + } else { + z[n] = z4 * z_factor; + } + } + + // Calculate a, b, c, d, and e. + phi1 = input.get_y_from_row(row); + lambda1 = input.get_x_from_column(col); + + phi2 = phi1; + lambda2 = input.get_x_from_column(col-1); + + b = if use_haversine { + haversine_distance((phi1, lambda1), (phi2, lambda2)) + } else { + vincenty_distance((phi1, lambda1), (phi2, lambda2)) + }; + + phi2 = input.get_y_from_row(row+1); + lambda2 = lambda1; + + d = if use_haversine { + haversine_distance((phi1, lambda1), (phi2, lambda2)) + } else { + vincenty_distance((phi1, lambda1), (phi2, lambda2)) + }; + + phi2 = input.get_y_from_row(row-1); + lambda2 = lambda1; + + e = if use_haversine { + haversine_distance((phi1, lambda1), (phi2, lambda2)) + } else { + vincenty_distance((phi1, lambda1), (phi2, lambda2)) + }; + + phi1 = input.get_y_from_row(row+1); + lambda1 = input.get_x_from_column(col); + + phi2 = phi1; + lambda2 = input.get_x_from_column(col-1); + + a = if use_haversine { + haversine_distance((phi1, lambda1), (phi2, lambda2)) + } else { + vincenty_distance((phi1, lambda1), (phi2, lambda2)) + }; + + phi1 = input.get_y_from_row(row-1); + lambda1 = input.get_x_from_column(col); + + phi2 = phi1; + lambda2 = input.get_x_from_column(col-1); + + c = if use_haversine { + haversine_distance((phi1, lambda1), (phi2, lambda2)) + } else { + vincenty_distance((phi1, lambda1), (phi2, lambda2)) + }; + + /* + The following equations have been taken from Florinsky (2016) Principles and Methods + of Digital Terrain Modelling, Chapter 4, pg. 117. + */ + + p = (a * a * c * d * (d + e) * (z[2] - z[0]) + b * (a * a * d * d + c * c * e * e) * (z[5] - z[3]) + a * c * c * e * (d + e) * (z[8] - z[6])) + / (2. * (a * a * c * c * (d + e).powi(2) + b * b * (a * a * d * d + c * c * e * e))); + + q = 1. / (3. * d * e * (d + e) * (a.powi(4) + b.powi(4) + c.powi(4))) + * ((d * d * (a.powi(4) + b.powi(4) + b * b * c * c) + c * c * e * e * (a * a - b * b)) * (z[0] + z[2]) + - (d * d * (a.powi(4) + c.powi(4) + b * b * c * c) - e * e * (a.powi(4) + c.powi(4) + a * a * b * b)) * (z[3] + z[5]) + - (e * e * (b.powi(4) + c.powi(4) + a * a * b * b) - a * a * d * d * (b * b - c * c)) * (z[6] + z[8]) + + d * d * (b.powi(4) * (z[1] - 3. * z[4]) + c.powi(4) * (3. * z[1] - z[4]) + (a.powi(4) - 2. * b * b * c * c) * (z[1] - z[4])) + + e * e * (a.powi(4) * (z[4] - 3. * z[7]) + b.powi(4) * (3. * z[4] - z[7]) + (c.powi(4) - 2. * a * a * b * b) * (z[4] - z[7])) + - 2. * (a * a * d * d * (b * b - c * c) * z[7] + c * c * e * e * (a * a - b * b) * z[1])); + + if p != 0f64 { // slope is greater than zero + data[col as usize] = 180f64 - (q / p).atan().to_degrees() + 90f64 * (p / p.abs()); + } else { + data[col as usize] = -1f64; // undefined for flat surfaces + } + } + } + + tx.send((row, data)).unwrap(); + } + }); + } + } + + let mut aspect = Raster::initialize_using_file(&"aspect.tif", &input); + + for row in 0..rows { + let (r, data) = rx.recv().expect("Error receiving data from thread."); + aspect.set_row_data(r, data); + if configurations.verbose_mode { + progress = (100.0_f64 * row as f64 / (rows - 1) as f64) as usize; + if progress != old_progress { + println!("Progress: {}%", progress); + old_progress = progress; + } + } + } + + drop(input); + + let aspect = Arc::new(aspect); + for tid in 0..num_procs { + let aspect = aspect.clone(); + let tx = tx.clone(); + thread::spawn(move || { + let mut z: f64; + let mut sum: f64; + let mut relative_aspect: f64; + let mut num_neighbours: f64; + let offsets = [ + [-1, -1], [0, -1], [1, -1], + [-1, 0], [1, 0], + [-1, 1], [0, 1], [1, 1] + ]; + let azimuth = [ + 135f64, 180f64, 225f64, + 90f64, 270f64, + 45f64, 0f64, 315f64 + ]; + + for row in (0..rows).filter(|r| r % num_procs == tid) { + let mut data = vec![nodata; columns as usize]; + for col in 0..columns { + if aspect.get_value(row, col) != nodata { + sum = 0f64; + num_neighbours = 0f64; + for n in 0..8 { + z = aspect.get_value(row + offsets[n][1], col + offsets[n][0]); + if z != nodata { + relative_aspect = (z - azimuth[n]).abs(); + if relative_aspect > 180.0 { + relative_aspect = 360.0 - relative_aspect; + } + sum += relative_aspect; + num_neighbours += 1.0; + } + } + data[col as usize] = sum / num_neighbours - 90f64; + } + } + + tx.send((row, data)).unwrap(); + } + }); + } + + let mut output = Raster::initialize_using_file(&output_file, &aspect); + for row in 0..rows { + let (r, data) = rx.recv().expect("Error receiving data from thread."); + output.set_row_data(r, data); + if configurations.verbose_mode { + progress = (100.0_f64 * row as f64 / (rows - 1) as f64) as usize; + if progress != old_progress { + println!("Progress: {}%", progress); + old_progress = progress; + } + } + } + + if configurations.verbose_mode { + println!("Saving data...") + }; + + let _ = match output.write() { + Ok(_) => { + if configurations.verbose_mode { + println!("Output file written") + } + } + Err(e) => return Err(e), + }; + + let elapsed_time = get_formatted_elapsed_time(start); + + if configurations.verbose_mode { + println!( + "\n{}", + &format!("Elapsed Time (Including I/O): {}", elapsed_time) + ); + } + + Ok(()) +} diff --git a/whitebox-plugins/src/correct_stream_vector_direction/main.rs b/whitebox-plugins/src/correct_stream_vector_direction/main.rs index 16a04dc6..432fa25b 100644 --- a/whitebox-plugins/src/correct_stream_vector_direction/main.rs +++ b/whitebox-plugins/src/correct_stream_vector_direction/main.rs @@ -460,7 +460,7 @@ impl Polyline { // Creates a new Polyline from vertices fn new(vertices: &[Point2D], id: usize) -> Self { Polyline { - vertices: vertices.clone().to_vec(), + vertices: vertices.to_vec(), id, } } diff --git a/whitebox-plugins/src/repair_stream_vector_topology/main.rs b/whitebox-plugins/src/repair_stream_vector_topology/main.rs index 9b1c7b21..0e76ff34 100644 --- a/whitebox-plugins/src/repair_stream_vector_topology/main.rs +++ b/whitebox-plugins/src/repair_stream_vector_topology/main.rs @@ -1,7 +1,7 @@ /* Authors: Prof. John Lindsay Created: 03/08/2021 (oringinally in Whitebox Toolset Extension) -Last Modified: 04/10/2023 +Last Modified: 04/11/2023 License: MIT */ @@ -1063,7 +1063,7 @@ impl Polyline { // Creates a new Polyline from vertices fn new(vertices: &[Point2D], id: usize) -> Self { Polyline { - vertices: vertices.clone().to_vec(), + vertices: vertices.to_vec(), id, split_points: vec![], splits_offset_by_one: false, diff --git a/whitebox-plugins/src/vector_stream_network_analysis/main.rs b/whitebox-plugins/src/vector_stream_network_analysis/main.rs index 8b88811b..4e49adfe 100644 --- a/whitebox-plugins/src/vector_stream_network_analysis/main.rs +++ b/whitebox-plugins/src/vector_stream_network_analysis/main.rs @@ -833,7 +833,7 @@ impl Polyline { // Creates a new Polyline from vertices fn new(vertices: &[Point2D]) -> Self { Polyline { - vertices: vertices.clone().to_vec() + vertices: vertices.to_vec() } } diff --git a/whitebox-raster/.DS_Store b/whitebox-raster/.DS_Store index 13f7503d..82c1ff01 100644 Binary files a/whitebox-raster/.DS_Store and b/whitebox-raster/.DS_Store differ diff --git a/whitebox-raster/src/geotiff/mod.rs b/whitebox-raster/src/geotiff/mod.rs index 4bcdfaaf..492e97e4 100755 --- a/whitebox-raster/src/geotiff/mod.rs +++ b/whitebox-raster/src/geotiff/mod.rs @@ -784,8 +784,28 @@ pub fn read_geotiff<'a>( // configs.epsg_code = geokeys_map.get(&3072).unwrap().interpret_as_u16()[0]; // } - // Determine the image mode. let kw_map = get_keyword_map(); + + configs.xy_units = match geokeys_map.get(&3076) { + Some(ifd) => { + let val = ifd.interpret_as_u16()[0]; + let proj_linear_units_map = kw_map.get(&3076u16).unwrap(); + proj_linear_units_map.get(&val).unwrap().to_string() + }, + None => "not specified".to_string() + }; + + configs.z_units = match geokeys_map.get(&4099u16) { + Some(ifd) => { + let val = ifd.interpret_as_u16()[0]; + let vertical_units_map = kw_map.get(&4099u16).unwrap(); + vertical_units_map.get(&val).unwrap().to_string() + }, + None => "not specified".to_string() + }; + + // Determine the image mode. + // let kw_map = get_keyword_map(); let photomet_map = kw_map.get(&262).unwrap(); let photomet_str: String = photomet_map.get(&photometric_interp).unwrap().to_string(); // let mode: ImageMode; diff --git a/whitebox-runner/.DS_Store b/whitebox-runner/.DS_Store index e4bc094b..e76f45d0 100644 Binary files a/whitebox-runner/.DS_Store and b/whitebox-runner/.DS_Store differ diff --git a/whitebox-runner/Cargo.toml b/whitebox-runner/Cargo.toml index a5f0f914..e9b1cd4e 100644 --- a/whitebox-runner/Cargo.toml +++ b/whitebox-runner/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "whitebox_runner" -version = "2.0.0" +version = "2.1.0" authors = ["John Lindsay "] edition = "2021" diff --git a/whitebox-runner/src/deactivate_extension.rs b/whitebox-runner/src/deactivate_extension.rs index 11e39b0e..d51d139f 100644 --- a/whitebox-runner/src/deactivate_extension.rs +++ b/whitebox-runner/src/deactivate_extension.rs @@ -104,7 +104,7 @@ impl MyApp { "lidar".to_string() } else if ext_name.to_lowercase().contains("dem") { "dem".to_string() - } else if ext_name.to_lowercase().contains("general") { + } else if ext_name.to_lowercase().contains("general") || ext_name.to_lowercase().contains("whitebox") { "general".to_string() } else { bail!("Unrecognized extension product {}.\n", ext_name); diff --git a/whitebox-runner/src/extension.rs b/whitebox-runner/src/extension.rs index 2165f31d..e11a1945 100644 --- a/whitebox-runner/src/extension.rs +++ b/whitebox-runner/src/extension.rs @@ -20,10 +20,10 @@ impl ExtensionInstall { ExtensionInstall { product_index: 0, product_list: vec![ - "General Toolset Extension".to_string(), - "DEM & Spatial Hydrology Extension".to_string(), - "Lidar & Remote Sensing Extension".to_string(), - "Agriculture Extension".to_string() + "Whitebox Toolset Extension".to_string(), + // "DEM & Spatial Hydrology Extension".to_string(), + // "Lidar & Remote Sensing Extension".to_string(), + // "Agriculture Extension".to_string() ], email: String::new(), seat_number: 0, diff --git a/whitebox-runner/src/main.rs b/whitebox-runner/src/main.rs index db502f2d..69c336d5 100644 --- a/whitebox-runner/src/main.rs +++ b/whitebox-runner/src/main.rs @@ -407,7 +407,7 @@ impl MyApp { let mut tb_hm = HashMap::new(); for i in 0..tb.len() { - let tlbx = tb[i].clone(); + let tlbx = tb[i]; let mut v = vec![]; for j in 0..tool_list.len() { if tool_list[j].1 == tlbx { diff --git a/whitebox-tools-app/.DS_Store b/whitebox-tools-app/.DS_Store index 1c539d2f..320b93c5 100755 Binary files a/whitebox-tools-app/.DS_Store and b/whitebox-tools-app/.DS_Store differ diff --git a/whitebox-tools-app/Cargo.toml b/whitebox-tools-app/Cargo.toml index 947629d5..917df654 100755 --- a/whitebox-tools-app/Cargo.toml +++ b/whitebox-tools-app/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "whitebox_tools" -version = "2.3.0" +version = "2.4.0" authors = ["John Lindsay "] edition = "2021" diff --git a/whitebox-tools-app/src/tools/gis_analysis/dissolve.rs b/whitebox-tools-app/src/tools/gis_analysis/dissolve.rs index 7ddae118..5b460a27 100755 --- a/whitebox-tools-app/src/tools/gis_analysis/dissolve.rs +++ b/whitebox-tools-app/src/tools/gis_analysis/dissolve.rs @@ -15,13 +15,13 @@ use crate::tools::*; use whitebox_vector::*; use kdtree::distance::squared_euclidean; use kdtree::KdTree; -use std::cmp::Ordering; +// use std::cmp::Ordering; use std::collections::HashSet; use std::env; use std::io::{Error, ErrorKind}; use std::path; -const EPSILON: f64 = std::f64::EPSILON; +// const EPSILON: f64 = std::f64::EPSILON; /// This tool can be used to remove the interior, or shared, boundaries within a vector /// polygon coverage. You can either dissolve all interior boundaries or dissolve those @@ -1179,38 +1179,38 @@ impl WhiteboxTool for Dissolve { } } -#[derive(Debug)] -struct Link { - id: usize, - priority: f64, -} - -impl PartialEq for Link { - fn eq(&self, other: &Self) -> bool { - (self.priority - other.priority).abs() < EPSILON && self.id == other.id - } -} - -impl Eq for Link {} - -impl Ord for Link { - fn cmp(&self, other: &Link) -> Ordering { - // this sorts priorities from low to high - // and when priorities are equal, id's from - // high to low. - let mut ord = other.priority.partial_cmp(&self.priority).unwrap(); - if ord == Ordering::Equal { - ord = self.id.cmp(&other.id); - } - ord - } -} - -impl PartialOrd for Link { - fn partial_cmp(&self, other: &Link) -> Option { - Some(self.cmp(other)) - } -} +// #[derive(Debug)] +// struct Link { +// id: usize, +// priority: f64, +// } + +// impl PartialEq for Link { +// fn eq(&self, other: &Self) -> bool { +// (self.priority - other.priority).abs() < EPSILON && self.id == other.id +// } +// } + +// impl Eq for Link {} + +// impl Ord for Link { +// fn cmp(&self, other: &Link) -> Ordering { +// // this sorts priorities from low to high +// // and when priorities are equal, id's from +// // high to low. +// let mut ord = other.priority.partial_cmp(&self.priority).unwrap(); +// if ord == Ordering::Equal { +// ord = self.id.cmp(&other.id); +// } +// ord +// } +// } + +// impl PartialOrd for Link { +// fn partial_cmp(&self, other: &Link) -> Option { +// Some(self.cmp(other)) +// } +// } fn get_other_endnode(index: usize) -> usize { if index % 2 == 0 { diff --git a/whitebox-tools-app/src/tools/gis_analysis/merge_line_segments.rs b/whitebox-tools-app/src/tools/gis_analysis/merge_line_segments.rs index b8a9e2fe..abb80e5a 100755 --- a/whitebox-tools-app/src/tools/gis_analysis/merge_line_segments.rs +++ b/whitebox-tools-app/src/tools/gis_analysis/merge_line_segments.rs @@ -12,12 +12,12 @@ use crate::tools::*; use whitebox_vector::*; use kdtree::distance::squared_euclidean; use kdtree::KdTree; -use std::cmp::Ordering; +// use std::cmp::Ordering; use std::env; use std::io::{Error, ErrorKind}; use std::path; -const EPSILON: f64 = std::f64::EPSILON; +// const EPSILON: f64 = std::f64::EPSILON; /// Vector lines can sometimes contain two features that are connected by a shared end vertex. This tool /// identifies connected line features in an input vector file (`--input`) and merges them in the output @@ -521,38 +521,38 @@ impl WhiteboxTool for MergeLineSegments { } } -#[derive(Debug)] -struct Link { - id: usize, - priority: f64, -} - -impl PartialEq for Link { - fn eq(&self, other: &Self) -> bool { - (self.priority - other.priority).abs() < EPSILON && self.id == other.id - } -} - -impl Eq for Link {} - -impl Ord for Link { - fn cmp(&self, other: &Link) -> Ordering { - // this sorts priorities from low to high - // and when priorities are equal, id's from - // high to low. - let mut ord = other.priority.partial_cmp(&self.priority).unwrap(); - if ord == Ordering::Equal { - ord = self.id.cmp(&other.id); - } - ord - } -} - -impl PartialOrd for Link { - fn partial_cmp(&self, other: &Link) -> Option { - Some(self.cmp(other)) - } -} +// #[derive(Debug)] +// struct Link { +// id: usize, +// priority: f64, +// } + +// impl PartialEq for Link { +// fn eq(&self, other: &Self) -> bool { +// (self.priority - other.priority).abs() < EPSILON && self.id == other.id +// } +// } + +// impl Eq for Link {} + +// impl Ord for Link { +// fn cmp(&self, other: &Link) -> Ordering { +// // this sorts priorities from low to high +// // and when priorities are equal, id's from +// // high to low. +// let mut ord = other.priority.partial_cmp(&self.priority).unwrap(); +// if ord == Ordering::Equal { +// ord = self.id.cmp(&other.id); +// } +// ord +// } +// } + +// impl PartialOrd for Link { +// fn partial_cmp(&self, other: &Link) -> Option { +// Some(self.cmp(other)) +// } +// } fn get_other_endnode(index: usize) -> usize { if index % 2 == 0 { diff --git a/whitebox-tools-app/src/tools/image_analysis/k_means_clustering.rs b/whitebox-tools-app/src/tools/image_analysis/k_means_clustering.rs index c53cd492..94d5b231 100755 --- a/whitebox-tools-app/src/tools/image_analysis/k_means_clustering.rs +++ b/whitebox-tools-app/src/tools/image_analysis/k_means_clustering.rs @@ -741,7 +741,7 @@ impl WhiteboxTool for KMeansClustering { &format!( "Image {}: {}
", i + 1, - input_files[i].clone() + input_files[i] ) .as_bytes(), )?; diff --git a/whitebox-tools-app/src/tools/image_analysis/modified_k_means_clustering.rs b/whitebox-tools-app/src/tools/image_analysis/modified_k_means_clustering.rs index 332a98d1..b1c7350e 100755 --- a/whitebox-tools-app/src/tools/image_analysis/modified_k_means_clustering.rs +++ b/whitebox-tools-app/src/tools/image_analysis/modified_k_means_clustering.rs @@ -698,7 +698,7 @@ impl WhiteboxTool for ModifiedKMeansClustering { &format!( "Image {}: {}
", i + 1, - input_files[i].clone() + input_files[i] ) .as_bytes(), )?; diff --git a/whitebox-tools-app/src/tools/image_analysis/mosaic.rs b/whitebox-tools-app/src/tools/image_analysis/mosaic.rs index dba38370..e0502931 100755 --- a/whitebox-tools-app/src/tools/image_analysis/mosaic.rs +++ b/whitebox-tools-app/src/tools/image_analysis/mosaic.rs @@ -231,7 +231,7 @@ impl WhiteboxTool for Mosaic { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/block_maximum.rs b/whitebox-tools-app/src/tools/lidar_analysis/block_maximum.rs index 9cb2d85f..a7178c54 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/block_maximum.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/block_maximum.rs @@ -219,7 +219,7 @@ impl WhiteboxTool for LidarBlockMaximum { // } // } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/block_minimum.rs b/whitebox-tools-app/src/tools/lidar_analysis/block_minimum.rs index 1b126870..915471ad 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/block_minimum.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/block_minimum.rs @@ -219,7 +219,7 @@ impl WhiteboxTool for LidarBlockMinimum { // } // } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/flightline_overlap.rs b/whitebox-tools-app/src/tools/lidar_analysis/flightline_overlap.rs index 4bd3baae..3ed33cd9 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/flightline_overlap.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/flightline_overlap.rs @@ -221,7 +221,7 @@ impl WhiteboxTool for FlightlineOverlap { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/las_to_multipoint_shapefile.rs b/whitebox-tools-app/src/tools/lidar_analysis/las_to_multipoint_shapefile.rs index eb9bc3ea..89ab8b93 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/las_to_multipoint_shapefile.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/las_to_multipoint_shapefile.rs @@ -190,7 +190,7 @@ impl WhiteboxTool for LasToMultipointShapefile { // } // } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/las_to_shapefile.rs b/whitebox-tools-app/src/tools/lidar_analysis/las_to_shapefile.rs index 025004e6..791fa2f0 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/las_to_shapefile.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/las_to_shapefile.rs @@ -183,7 +183,7 @@ impl WhiteboxTool for LasToShapefile { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/las_to_zlidar.rs b/whitebox-tools-app/src/tools/lidar_analysis/las_to_zlidar.rs index ae2560a1..dcdcba2a 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/las_to_zlidar.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/las_to_zlidar.rs @@ -235,7 +235,7 @@ impl WhiteboxTool for LasToZlidar { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_dsm.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_dsm.rs index 63f2106f..23cf3862 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_dsm.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_dsm.rs @@ -343,7 +343,7 @@ impl WhiteboxTool for LidarDigitalSurfaceModel { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_idw_interpolation.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_idw_interpolation.rs index bb9e78a2..6e1b08ff 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_idw_interpolation.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_idw_interpolation.rs @@ -450,7 +450,7 @@ impl WhiteboxTool for LidarIdwInterpolation { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_join.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_join.rs index 2f16e96a..1ab24655 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_join.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_join.rs @@ -217,8 +217,8 @@ impl WhiteboxTool for LidarJoin { let n_points = input.header.number_of_points as usize; let mut pr: LidarPointRecord; - for i in 0..n_points { - pr = input.get_record(i); + for p in 0..n_points { + pr = input.get_record(p); output.add_point_record(pr); } } diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_nn_gridding.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_nn_gridding.rs index b8175c5b..d8cc2fb8 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_nn_gridding.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_nn_gridding.rs @@ -419,7 +419,7 @@ impl WhiteboxTool for LidarNearestNeighbourGridding { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_density.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_density.rs index 2a826815..ce8a0f7c 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_density.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_density.rs @@ -377,7 +377,7 @@ impl WhiteboxTool for LidarPointDensity { // } // } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_stats.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_stats.rs index b3149ff2..855aec8a 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_stats.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_point_stats.rs @@ -315,7 +315,7 @@ impl WhiteboxTool for LidarPointStats { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_radial_basis_function_interpolation.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_radial_basis_function_interpolation.rs index e6e8e9fe..7a663bd1 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_radial_basis_function_interpolation.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_radial_basis_function_interpolation.rs @@ -499,7 +499,7 @@ impl WhiteboxTool for LidarRbfInterpolation { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_rooftop_analysis.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_rooftop_analysis.rs index 3a7fc66c..6017ff84 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_rooftop_analysis.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_rooftop_analysis.rs @@ -486,7 +486,7 @@ impl WhiteboxTool for LidarRooftopAnalysis { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_tile_footprint.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_tile_footprint.rs index 4dc35d93..b20d93bd 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_tile_footprint.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_tile_footprint.rs @@ -225,7 +225,7 @@ impl WhiteboxTool for LidarTileFootprint { // } // } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/lidar_tin_gridding.rs b/whitebox-tools-app/src/tools/lidar_analysis/lidar_tin_gridding.rs index ed542c6a..cd7bb046 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/lidar_tin_gridding.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/lidar_tin_gridding.rs @@ -421,7 +421,7 @@ impl WhiteboxTool for LidarTINGridding { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/lidar_analysis/select_tiles_by_polygon.rs b/whitebox-tools-app/src/tools/lidar_analysis/select_tiles_by_polygon.rs index 324d325c..4e84c513 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/select_tiles_by_polygon.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/select_tiles_by_polygon.rs @@ -189,7 +189,7 @@ impl WhiteboxTool for SelectTilesByPolygon { let sep: String = path::MAIN_SEPARATOR.to_string(); if input_directory.is_empty() { - input_directory = working_directory.clone().to_string(); + input_directory = working_directory.to_string(); } if !polygons_file.contains(&sep) && !polygons_file.contains("/") { polygons_file = format!("{}{}", working_directory, polygons_file); diff --git a/whitebox-tools-app/src/tools/lidar_analysis/zlidar_to_las.rs b/whitebox-tools-app/src/tools/lidar_analysis/zlidar_to_las.rs index e6cfb6ea..edbbe7b0 100755 --- a/whitebox-tools-app/src/tools/lidar_analysis/zlidar_to_las.rs +++ b/whitebox-tools-app/src/tools/lidar_analysis/zlidar_to_las.rs @@ -190,7 +190,7 @@ impl WhiteboxTool for ZlidarToLas { "This tool must be run by specifying either an individual input file or a working directory.")); } if std::path::Path::new(&working_directory).is_dir() { - for entry in fs::read_dir(working_directory.clone())? { + for entry in fs::read_dir(working_directory)? { let s = entry? .path() .into_os_string() diff --git a/whitebox-tools-app/src/tools/math_stat_analysis/image_regression.rs b/whitebox-tools-app/src/tools/math_stat_analysis/image_regression.rs index 3f7d8f3e..8efa58b7 100755 --- a/whitebox-tools-app/src/tools/math_stat_analysis/image_regression.rs +++ b/whitebox-tools-app/src/tools/math_stat_analysis/image_regression.rs @@ -585,14 +585,14 @@ impl WhiteboxTool for ImageRegression { let x_filename = path.file_name().unwrap().to_str().unwrap(); let s1 = &format!( "

Input Image 1 (independent variable, X): {}

", - x_filename.clone() + x_filename ); writer.write_all(s1.as_bytes())?; let path = Path::new(&input_file2); let y_filename = path.file_name().unwrap().to_str().unwrap(); let s1 = &format!( "

Input Image 2 (dependent variable, Y): {}


", - y_filename.clone() + y_filename ); writer.write_all(s1.as_bytes())?; @@ -738,7 +738,7 @@ impl WhiteboxTool for ImageRegression { input2.get_short_filename(), slope, input1.get_short_filename(), - sign.clone(), + sign, intercept.abs() ); writer.write_all(s2.as_bytes())?; diff --git a/whitebox-tools-app/src/tools/math_stat_analysis/principal_component_analysis.rs b/whitebox-tools-app/src/tools/math_stat_analysis/principal_component_analysis.rs index 8ef20006..33dcbde3 100755 --- a/whitebox-tools-app/src/tools/math_stat_analysis/principal_component_analysis.rs +++ b/whitebox-tools-app/src/tools/math_stat_analysis/principal_component_analysis.rs @@ -273,7 +273,7 @@ impl WhiteboxTool for PrincipalComponentAnalysis { sep ) } else { - working_directory.clone().to_owned() + working_directory.to_owned() }; if !output_html_file.contains(&sep) && !output_html_file.contains("/") && !output_html_file.is_empty() { diff --git a/whitebox-tools-app/src/tools/stream_network_analysis/raster_streams_to_vector.rs b/whitebox-tools-app/src/tools/stream_network_analysis/raster_streams_to_vector.rs index 90f2298c..730f6301 100755 --- a/whitebox-tools-app/src/tools/stream_network_analysis/raster_streams_to_vector.rs +++ b/whitebox-tools-app/src/tools/stream_network_analysis/raster_streams_to_vector.rs @@ -24,7 +24,13 @@ use std::path; /// integer value. The database file will also have a field for the length of each /// link in the stream network. The flow pointer file must be calculated from a DEM with /// all topographic depressions and flat areas removed and must be calculated using the -/// D8 flow pointer algorithm. The output vector will contain PolyLine features. +/// D8 flow pointer algorithm. The output vector will contain PolyLine features. By default, +/// the tool will only maintain vertices in the output vector file where there is a change +/// in the downstream flow direction, which can result in a significant reduction in the +/// number of vertices in the output file, and therefore reduced file sizes. However, the +/// user can optionally override this behaviour by specifying the `--all_vertices` input +/// parameter. If specified, this parameter has the effect of presering all of the verticies +/// associated with grid cells in the input raster within the output vector file. /// /// # See Also /// `RasterizeStreams`, `RasterToVectorLines` diff --git a/whitebox-tools-app/src/tools/terrain_analysis/aspect.rs b/whitebox-tools-app/src/tools/terrain_analysis/aspect.rs index 27cf85a2..0899b3e0 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/aspect.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/aspect.rs @@ -25,7 +25,7 @@ use whitebox_common::utils::{ /// This tool calculates slope aspect (i.e. slope orientation in degrees clockwise from north) for each grid cell /// in an input digital elevation model (DEM). The user must specify the name of the input /// DEM (`--dem`) and the output raster image. The *Z conversion factor* is only important -/// when the vertical and horizontal units are not the same in the DEM. When this is the case, +/// when the vertical and horizontal units are not the same in the DEM, and the DEM is in a projected coordinate system. When this is the case, /// the algorithm will multiply each elevation in the DEM by the Z conversion factor. /// /// For DEMs in projected coordinate systems, the tool uses the 3rd-order bivariate diff --git a/whitebox-tools-app/src/tools/terrain_analysis/feature_preserving_smoothing.rs b/whitebox-tools-app/src/tools/terrain_analysis/feature_preserving_smoothing.rs index 93f35a50..77b39db6 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/feature_preserving_smoothing.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/feature_preserving_smoothing.rs @@ -335,8 +335,11 @@ impl WhiteboxTool for FeaturePreservingSmoothing { if num_iter < 1 { num_iter = 1; } - if max_norm_diff > 90f32 { - max_norm_diff = 90f32; + // if max_norm_diff > 90f32 { + // max_norm_diff = 90f32; + // } + if max_norm_diff > 180f32 { + max_norm_diff = 180f32; } let threshold = max_norm_diff.to_radians().cos(); diff --git a/whitebox-tools-app/src/tools/terrain_analysis/hillshade.rs b/whitebox-tools-app/src/tools/terrain_analysis/hillshade.rs index 6a76de32..a6831575 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/hillshade.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/hillshade.rs @@ -27,7 +27,7 @@ use whitebox_common::utils::{ /// be specified include the illumination source azimuth (`--azimuth`), or sun direction (0-360 degrees), the /// illumination source altitude (`--altitude`; i.e. the elevation of the sun above the horizon, measured as an angle /// from 0 to 90 degrees) and the Z conversion factor (`--zfactor`). The *Z conversion factor* is only important -/// when the vertical and horizontal units are not the same in the DEM. When this is the case, +/// when the vertical and horizontal units are not the same in the DEM, and the DEM is in a projected coordinate system. When this is the case, /// the algorithm will multiply each elevation in the DEM by the Z conversion factor. If the /// DEM is in the geographic coordinate system (latitude and longitude), the following equation /// is used: diff --git a/whitebox-tools-app/src/tools/terrain_analysis/horizon_angle.rs b/whitebox-tools-app/src/tools/terrain_analysis/horizon_angle.rs index 22e722bb..1be63def 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/horizon_angle.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/horizon_angle.rs @@ -287,9 +287,9 @@ impl WhiteboxTool for HorizonAngle { let start = Instant::now(); let line_slope: f32 = if azimuth < 180f32 { - (90f32 - azimuth).to_radians().tan() + ((90f32 - azimuth) as f64).to_radians().tan() as f32 } else { - (270f32 - azimuth).to_radians().tan() + ((270f32 - azimuth) as f64).to_radians().tan() as f32 }; let rows = configs.rows as isize; diff --git a/whitebox-tools-app/src/tools/terrain_analysis/multidirectional_hillshade.rs b/whitebox-tools-app/src/tools/terrain_analysis/multidirectional_hillshade.rs index eed13bfd..41df949e 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/multidirectional_hillshade.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/multidirectional_hillshade.rs @@ -27,7 +27,7 @@ use whitebox_common::utils::{ /// hillshade image name (`--output`). Other parameters that must be specified include the altitude of the illumination /// sources (`--altitude`; i.e. the elevation of the sun above the horizon, measured as an angle /// from 0 to 90 degrees) and the Z conversion factor (`--zfactor`). The *Z conversion factor* is only important -/// when the vertical and horizontal units are not the same in the DEM. When this is the case, +/// when the vertical and horizontal units are not the same in the DEM, and the DEM is in a projected coordinate system. When this is the case, /// the algorithm will multiply each elevation in the DEM by the Z conversion factor. If the /// DEM is in the geographic coordinate system (latitude and longitude), the following equation /// is used: diff --git a/whitebox-tools-app/src/tools/terrain_analysis/relative_aspect.rs b/whitebox-tools-app/src/tools/terrain_analysis/relative_aspect.rs index 011c702b..18725aed 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/relative_aspect.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/relative_aspect.rs @@ -29,7 +29,7 @@ use whitebox_common::utils::{ /// landforms and the deflection of wind by topography. /// /// The user must specify the name of a digital elevation model (DEM) (`--dem`) and an azimuth (i.e. a wind direction). The -/// Z Conversion Factor (`--zfactor`) is only important when the vertical and horizontal units are not the same in the DEM. +/// Z Conversion Factor (`--zfactor`) is only important when the vertical and horizontal units are not the same in the DEM, and the DEM is in a projected coordinate system. /// When this is the case, the algorithm will multiply each elevation in the DEM by the Z Conversion Factor. /// /// # Reference diff --git a/whitebox-tools-app/src/tools/terrain_analysis/slope.rs b/whitebox-tools-app/src/tools/terrain_analysis/slope.rs index 5d47f5be..0f30d918 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/slope.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/slope.rs @@ -25,7 +25,7 @@ use whitebox_common::utils::{ /// This tool calculates slope gradient (i.e. slope steepness in degrees, radians, or percent) for each grid cell /// in an input digital elevation model (DEM). The user must specify the name of the input /// DEM (`--dem`) and the output raster image. The *Z conversion factor* is only important -/// when the vertical and horizontal units are not the same in the DEM. When this is the case, +/// when the vertical and horizontal units are not the same in the DEM, and the DEM is in a projected coordinate system. When this is the case, /// the algorithm will multiply each elevation in the DEM by the Z conversion factor. /// /// For DEMs in projected coordinate systems, the tool uses the 3rd-order bivariate diff --git a/whitebox-tools-app/src/tools/terrain_analysis/time_in_daylight.rs b/whitebox-tools-app/src/tools/terrain_analysis/time_in_daylight.rs index e2502ae0..8c14f782 100755 --- a/whitebox-tools-app/src/tools/terrain_analysis/time_in_daylight.rs +++ b/whitebox-tools-app/src/tools/terrain_analysis/time_in_daylight.rs @@ -613,9 +613,9 @@ impl WhiteboxTool for TimeInDaylight { if altitudes_and_durations[0].1 > 0f64 && total_daylight_in_az > 0f64 { // This azimuth sees sunshine at least part of the year. line_slope = if azimuth < 180f32 { - (90f32 - azimuth).to_radians().tan() + ((90f32 - azimuth) as f64).to_radians().tan() as f32 } else { - (270f32 - azimuth).to_radians().tan() + ((270f32 - azimuth) as f64).to_radians().tan() as f32 }; // Now perform the filter @@ -716,7 +716,7 @@ impl WhiteboxTool for TimeInDaylight { let early_stopping_slope = 80f32.to_radians().tan(); let mut current_elev: f32; let mut current_max_slope: f32; - let mut current_max_elev: f32; + // let mut current_max_elev: f32; let a_small_value = -9999999f32; for row in (0..rows).filter(|r| r % num_procs == tid) { let mut data: Vec = vec![nodata_f32; columns as usize]; @@ -725,7 +725,7 @@ impl WhiteboxTool for TimeInDaylight { if current_elev != nodata_f32 { // Run down the offsets of the ray current_max_slope = a_small_value; - current_max_elev = a_small_value; + // current_max_elev = a_small_value; for i in 0..num_offsets { // Where are we on the grid? x1 = col + offsets[i].0; @@ -747,10 +747,10 @@ impl WhiteboxTool for TimeInDaylight { z = z1 + offsets[i].4 * (z2 - z1); - // All previous cells are nearer, and so if this isn't a higher - // cell than the current highest, it can't be the horizon cell. - if z > current_max_elev { - current_max_elev = z; + // // All previous cells are nearer, and so if this isn't a higher + // // cell than the current highest, it can't be the horizon cell. + // if z > current_max_elev { + // current_max_elev = z; // Calculate the slope slope = (z - current_elev) / offsets[i].5; @@ -760,7 +760,7 @@ impl WhiteboxTool for TimeInDaylight { break; // we're unlikely to find a farther horizon cell. } } - } + // } } if current_max_slope == a_small_value { diff --git a/whitebox-vector/.DS_Store b/whitebox-vector/.DS_Store index 06d76a9b..2c842156 100644 Binary files a/whitebox-vector/.DS_Store and b/whitebox-vector/.DS_Store differ diff --git a/whitebox-vector/src/shapefile/mod.rs b/whitebox-vector/src/shapefile/mod.rs index 8d02310e..348d6029 100755 --- a/whitebox-vector/src/shapefile/mod.rs +++ b/whitebox-vector/src/shapefile/mod.rs @@ -1211,14 +1211,14 @@ impl Shapefile { let dc = self.attributes.fields[j as usize].decimal_count as usize; let s = v.to_string(); let e: Vec<&str> = s.split(".").collect(); - let f = if e.len() == 2 { e[1].clone() } else { "" }; + let f = if e.len() == 2 { e[1] } else { "" }; let mut s: String; let decimals = if f.len() > dc { let (e2, _) = f.split_at(dc); e2 } else if f.len() < dc { // pad with some trailing zeros - s = f.clone().to_string(); + s = f.to_string(); for _ in 0..(dc - f.len()) { s.push_str("0"); }