├── .gitignore ├── Cargo.lock ├── Cargo.toml ├── LICENSE ├── MapleMono-NF-CN-Regular.ttf ├── README.md ├── config.toml ├── music_list ├── 1 │ ├── avatar.png │ ├── background.png │ ├── jp.lrc │ ├── music_1.mp3 │ └── zh.lrc └── 2 │ ├── avatar.png │ ├── background.png │ ├── jp.lrc │ ├── music_2.mp3 │ └── zh.lrc ├── showcase ├── show_1.png ├── show_2.png └── show_3.png ├── src ├── audio.rs ├── config.rs ├── handle.rs ├── main.rs ├── view.rs └── view │ └── utils.rs └── to.sh /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "ab_glyph" 7 | version = "0.2.26" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "2e53b0a3d5760cd2ba9b787ae0c6440ad18ee294ff71b05e3381c900a7d16cfd" 10 | dependencies = [ 11 | "ab_glyph_rasterizer", 12 | "owned_ttf_parser", 13 | ] 14 | 15 | [[package]] 16 | name = "ab_glyph_rasterizer" 17 | version = "0.1.8" 18 | source = "registry+https://github.com/rust-lang/crates.io-index" 19 | checksum = "c71b1793ee61086797f5c80b6efa2b8ffa6d5dd703f118545808a7f2e27f7046" 20 | 21 | [[package]] 22 | name = "addr2line" 23 | version = "0.21.0" 24 | source = "registry+https://github.com/rust-lang/crates.io-index" 25 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 26 | dependencies = [ 27 | "gimli", 28 | ] 29 | 30 | [[package]] 31 | name = "adler" 32 | version = "1.0.2" 33 | source = "registry+https://github.com/rust-lang/crates.io-index" 34 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 35 | 36 | [[package]] 37 | name = "ahash" 38 | version = "0.8.11" 39 | source = "registry+https://github.com/rust-lang/crates.io-index" 40 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 41 | dependencies = [ 42 | "cfg-if", 43 | "getrandom", 44 | "once_cell", 45 | "version_check", 46 | "zerocopy", 47 | ] 48 | 49 | [[package]] 50 | name = "aho-corasick" 51 | version = "1.1.3" 52 | source = "registry+https://github.com/rust-lang/crates.io-index" 53 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 54 | dependencies = [ 55 | "memchr", 56 | ] 57 | 58 | [[package]] 59 | name = "aliasable" 60 | version = "0.1.3" 61 | source = "registry+https://github.com/rust-lang/crates.io-index" 62 | checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" 63 | 64 | [[package]] 65 | name = "allocator-api2" 66 | version = "0.2.18" 67 | source = "registry+https://github.com/rust-lang/crates.io-index" 68 | checksum = "5c6cb57a04249c6480766f7f7cef5467412af1490f8d1e243141daddada3264f" 69 | 70 | [[package]] 71 | name = "alsa" 72 | version = "0.9.0" 73 | source = "registry+https://github.com/rust-lang/crates.io-index" 74 | checksum = "37fe60779335388a88c01ac6c3be40304d1e349de3ada3b15f7808bb90fa9dce" 75 | dependencies = [ 76 | "alsa-sys", 77 | "bitflags 2.5.0", 78 | "libc", 79 | ] 80 | 81 | [[package]] 82 | name = "alsa-sys" 83 | version = "0.3.1" 84 | source = "registry+https://github.com/rust-lang/crates.io-index" 85 | checksum = "db8fee663d06c4e303404ef5f40488a53e062f89ba8bfed81f42325aafad1527" 86 | dependencies = [ 87 | "libc", 88 | "pkg-config", 89 | ] 90 | 91 | [[package]] 92 | name = "android-activity" 93 | version = "0.5.2" 94 | source = "registry+https://github.com/rust-lang/crates.io-index" 95 | checksum = "ee91c0c2905bae44f84bfa4e044536541df26b7703fd0888deeb9060fcc44289" 96 | dependencies = [ 97 | "android-properties", 98 | "bitflags 2.5.0", 99 | "cc", 100 | "cesu8", 101 | "jni", 102 | "jni-sys", 103 | "libc", 104 | "log", 105 | "ndk", 106 | "ndk-context", 107 | "ndk-sys", 108 | "num_enum", 109 | "thiserror", 110 | ] 111 | 112 | [[package]] 113 | name = "android-properties" 114 | version = "0.2.2" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "fc7eb209b1518d6bb87b283c20095f5228ecda460da70b44f0802523dea6da04" 117 | 118 | [[package]] 119 | name = "android-tzdata" 120 | version = "0.1.1" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | checksum = "e999941b234f3131b00bc13c22d06e8c5ff726d1b6318ac7eb276997bbb4fef0" 123 | 124 | [[package]] 125 | name = "android_system_properties" 126 | version = "0.1.5" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 129 | dependencies = [ 130 | "libc", 131 | ] 132 | 133 | [[package]] 134 | name = "approx" 135 | version = "0.5.1" 136 | source = "registry+https://github.com/rust-lang/crates.io-index" 137 | checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" 138 | dependencies = [ 139 | "num-traits", 140 | ] 141 | 142 | [[package]] 143 | name = "arrayref" 144 | version = "0.3.7" 145 | source = "registry+https://github.com/rust-lang/crates.io-index" 146 | checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" 147 | 148 | [[package]] 149 | name = "arrayvec" 150 | version = "0.7.4" 151 | source = "registry+https://github.com/rust-lang/crates.io-index" 152 | checksum = "96d30a06541fbafbc7f82ed10c06164cfbd2c401138f6addd8404629c4b16711" 153 | 154 | [[package]] 155 | name = "as-raw-xcb-connection" 156 | version = "1.0.1" 157 | source = "registry+https://github.com/rust-lang/crates.io-index" 158 | checksum = "175571dd1d178ced59193a6fc02dde1b972eb0bc56c892cde9beeceac5bf0f6b" 159 | 160 | [[package]] 161 | name = "ash" 162 | version = "0.37.3+1.3.251" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "39e9c3835d686b0a6084ab4234fcd1b07dbf6e4767dce60874b12356a25ecd4a" 165 | dependencies = [ 166 | "libloading 0.7.4", 167 | ] 168 | 169 | [[package]] 170 | name = "ashpd" 171 | version = "0.8.1" 172 | source = "registry+https://github.com/rust-lang/crates.io-index" 173 | checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" 174 | dependencies = [ 175 | "async-fs", 176 | "async-net", 177 | "enumflags2", 178 | "futures-channel", 179 | "futures-util", 180 | "rand", 181 | "serde", 182 | "serde_repr", 183 | "url", 184 | "zbus", 185 | ] 186 | 187 | [[package]] 188 | name = "async-broadcast" 189 | version = "0.7.0" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "258b52a1aa741b9f09783b2d86cf0aeeb617bbf847f6933340a39644227acbdb" 192 | dependencies = [ 193 | "event-listener 5.3.0", 194 | "event-listener-strategy 0.5.2", 195 | "futures-core", 196 | "pin-project-lite", 197 | ] 198 | 199 | [[package]] 200 | name = "async-channel" 201 | version = "2.2.1" 202 | source = "registry+https://github.com/rust-lang/crates.io-index" 203 | checksum = "136d4d23bcc79e27423727b36823d86233aad06dfea531837b038394d11e9928" 204 | dependencies = [ 205 | "concurrent-queue", 206 | "event-listener 5.3.0", 207 | "event-listener-strategy 0.5.2", 208 | "futures-core", 209 | "pin-project-lite", 210 | ] 211 | 212 | [[package]] 213 | name = "async-executor" 214 | version = "1.11.0" 215 | source = "registry+https://github.com/rust-lang/crates.io-index" 216 | checksum = "b10202063978b3351199d68f8b22c4e47e4b1b822f8d43fd862d5ea8c006b29a" 217 | dependencies = [ 218 | "async-task", 219 | "concurrent-queue", 220 | "fastrand", 221 | "futures-lite", 222 | "slab", 223 | ] 224 | 225 | [[package]] 226 | name = "async-fs" 227 | version = "2.1.2" 228 | source = "registry+https://github.com/rust-lang/crates.io-index" 229 | checksum = "ebcd09b382f40fcd159c2d695175b2ae620ffa5f3bd6f664131efff4e8b9e04a" 230 | dependencies = [ 231 | "async-lock", 232 | "blocking", 233 | "futures-lite", 234 | ] 235 | 236 | [[package]] 237 | name = "async-io" 238 | version = "2.3.2" 239 | source = "registry+https://github.com/rust-lang/crates.io-index" 240 | checksum = "dcccb0f599cfa2f8ace422d3555572f47424da5648a4382a9dd0310ff8210884" 241 | dependencies = [ 242 | "async-lock", 243 | "cfg-if", 244 | "concurrent-queue", 245 | "futures-io", 246 | "futures-lite", 247 | "parking", 248 | "polling", 249 | "rustix", 250 | "slab", 251 | "tracing", 252 | "windows-sys 0.52.0", 253 | ] 254 | 255 | [[package]] 256 | name = "async-lock" 257 | version = "3.3.0" 258 | source = "registry+https://github.com/rust-lang/crates.io-index" 259 | checksum = "d034b430882f8381900d3fe6f0aaa3ad94f2cb4ac519b429692a1bc2dda4ae7b" 260 | dependencies = [ 261 | "event-listener 4.0.3", 262 | "event-listener-strategy 0.4.0", 263 | "pin-project-lite", 264 | ] 265 | 266 | [[package]] 267 | name = "async-net" 268 | version = "2.0.0" 269 | source = "registry+https://github.com/rust-lang/crates.io-index" 270 | checksum = "b948000fad4873c1c9339d60f2623323a0cfd3816e5181033c6a5cb68b2accf7" 271 | dependencies = [ 272 | "async-io", 273 | "blocking", 274 | "futures-lite", 275 | ] 276 | 277 | [[package]] 278 | name = "async-process" 279 | version = "2.2.2" 280 | source = "registry+https://github.com/rust-lang/crates.io-index" 281 | checksum = "a53fc6301894e04a92cb2584fedde80cb25ba8e02d9dc39d4a87d036e22f397d" 282 | dependencies = [ 283 | "async-channel", 284 | "async-io", 285 | "async-lock", 286 | "async-signal", 287 | "async-task", 288 | "blocking", 289 | "cfg-if", 290 | "event-listener 5.3.0", 291 | "futures-lite", 292 | "rustix", 293 | "tracing", 294 | "windows-sys 0.52.0", 295 | ] 296 | 297 | [[package]] 298 | name = "async-recursion" 299 | version = "1.1.1" 300 | source = "registry+https://github.com/rust-lang/crates.io-index" 301 | checksum = "3b43422f69d8ff38f95f1b2bb76517c91589a924d1559a0e935d7c8ce0274c11" 302 | dependencies = [ 303 | "proc-macro2", 304 | "quote", 305 | "syn 2.0.63", 306 | ] 307 | 308 | [[package]] 309 | name = "async-signal" 310 | version = "0.2.6" 311 | source = "registry+https://github.com/rust-lang/crates.io-index" 312 | checksum = "afe66191c335039c7bb78f99dc7520b0cbb166b3a1cb33a03f53d8a1c6f2afda" 313 | dependencies = [ 314 | "async-io", 315 | "async-lock", 316 | "atomic-waker", 317 | "cfg-if", 318 | "futures-core", 319 | "futures-io", 320 | "rustix", 321 | "signal-hook-registry", 322 | "slab", 323 | "windows-sys 0.52.0", 324 | ] 325 | 326 | [[package]] 327 | name = "async-task" 328 | version = "4.7.1" 329 | source = "registry+https://github.com/rust-lang/crates.io-index" 330 | checksum = "8b75356056920673b02621b35afd0f7dda9306d03c79a30f5c56c44cf256e3de" 331 | 332 | [[package]] 333 | name = "async-trait" 334 | version = "0.1.80" 335 | source = "registry+https://github.com/rust-lang/crates.io-index" 336 | checksum = "c6fa2087f2753a7da8cc1c0dbfcf89579dd57458e36769de5ac750b4671737ca" 337 | dependencies = [ 338 | "proc-macro2", 339 | "quote", 340 | "syn 2.0.63", 341 | ] 342 | 343 | [[package]] 344 | name = "atomic-waker" 345 | version = "1.1.2" 346 | source = "registry+https://github.com/rust-lang/crates.io-index" 347 | checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" 348 | 349 | [[package]] 350 | name = "autocfg" 351 | version = "1.3.0" 352 | source = "registry+https://github.com/rust-lang/crates.io-index" 353 | checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0" 354 | 355 | [[package]] 356 | name = "backtrace" 357 | version = "0.3.71" 358 | source = "registry+https://github.com/rust-lang/crates.io-index" 359 | checksum = "26b05800d2e817c8b3b4b54abd461726265fa9789ae34330622f2db9ee696f9d" 360 | dependencies = [ 361 | "addr2line", 362 | "cc", 363 | "cfg-if", 364 | "libc", 365 | "miniz_oxide", 366 | "object", 367 | "rustc-demangle", 368 | ] 369 | 370 | [[package]] 371 | name = "bindgen" 372 | version = "0.69.4" 373 | source = "registry+https://github.com/rust-lang/crates.io-index" 374 | checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" 375 | dependencies = [ 376 | "bitflags 2.5.0", 377 | "cexpr", 378 | "clang-sys", 379 | "itertools", 380 | "lazy_static", 381 | "lazycell", 382 | "proc-macro2", 383 | "quote", 384 | "regex", 385 | "rustc-hash", 386 | "shlex", 387 | "syn 2.0.63", 388 | ] 389 | 390 | [[package]] 391 | name = "bit-set" 392 | version = "0.5.3" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1" 395 | dependencies = [ 396 | "bit-vec", 397 | ] 398 | 399 | [[package]] 400 | name = "bit-vec" 401 | version = "0.6.3" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" 404 | 405 | [[package]] 406 | name = "bit_field" 407 | version = "0.10.2" 408 | source = "registry+https://github.com/rust-lang/crates.io-index" 409 | checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" 410 | 411 | [[package]] 412 | name = "bitflags" 413 | version = "1.3.2" 414 | source = "registry+https://github.com/rust-lang/crates.io-index" 415 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 416 | 417 | [[package]] 418 | name = "bitflags" 419 | version = "2.5.0" 420 | source = "registry+https://github.com/rust-lang/crates.io-index" 421 | checksum = "cf4b9d6a944f767f8e5e0db018570623c85f3d925ac718db4e06d0187adb21c1" 422 | 423 | [[package]] 424 | name = "block" 425 | version = "0.1.6" 426 | source = "registry+https://github.com/rust-lang/crates.io-index" 427 | checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" 428 | 429 | [[package]] 430 | name = "block-buffer" 431 | version = "0.10.4" 432 | source = "registry+https://github.com/rust-lang/crates.io-index" 433 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 434 | dependencies = [ 435 | "generic-array", 436 | ] 437 | 438 | [[package]] 439 | name = "block-sys" 440 | version = "0.2.1" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "ae85a0696e7ea3b835a453750bf002770776609115e6d25c6d2ff28a8200f7e7" 443 | dependencies = [ 444 | "objc-sys", 445 | ] 446 | 447 | [[package]] 448 | name = "block2" 449 | version = "0.3.0" 450 | source = "registry+https://github.com/rust-lang/crates.io-index" 451 | checksum = "15b55663a85f33501257357e6421bb33e769d5c9ffb5ba0921c975a123e35e68" 452 | dependencies = [ 453 | "block-sys", 454 | "objc2", 455 | ] 456 | 457 | [[package]] 458 | name = "blocking" 459 | version = "1.6.0" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "495f7104e962b7356f0aeb34247aca1fe7d2e783b346582db7f2904cb5717e88" 462 | dependencies = [ 463 | "async-channel", 464 | "async-lock", 465 | "async-task", 466 | "futures-io", 467 | "futures-lite", 468 | "piper", 469 | ] 470 | 471 | [[package]] 472 | name = "bumpalo" 473 | version = "3.16.0" 474 | source = "registry+https://github.com/rust-lang/crates.io-index" 475 | checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" 476 | 477 | [[package]] 478 | name = "by_address" 479 | version = "1.2.1" 480 | source = "registry+https://github.com/rust-lang/crates.io-index" 481 | checksum = "64fa3c856b712db6612c019f14756e64e4bcea13337a6b33b696333a9eaa2d06" 482 | 483 | [[package]] 484 | name = "bytemuck" 485 | version = "1.15.0" 486 | source = "registry+https://github.com/rust-lang/crates.io-index" 487 | checksum = "5d6d68c57235a3a081186990eca2867354726650f42f7516ca50c28d6281fd15" 488 | dependencies = [ 489 | "bytemuck_derive", 490 | ] 491 | 492 | [[package]] 493 | name = "bytemuck_derive" 494 | version = "1.6.0" 495 | source = "registry+https://github.com/rust-lang/crates.io-index" 496 | checksum = "4da9a32f3fed317401fa3c862968128267c3106685286e15d5aaa3d7389c2f60" 497 | dependencies = [ 498 | "proc-macro2", 499 | "quote", 500 | "syn 2.0.63", 501 | ] 502 | 503 | [[package]] 504 | name = "byteorder" 505 | version = "1.5.0" 506 | source = "registry+https://github.com/rust-lang/crates.io-index" 507 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 508 | 509 | [[package]] 510 | name = "bytes" 511 | version = "1.6.0" 512 | source = "registry+https://github.com/rust-lang/crates.io-index" 513 | checksum = "514de17de45fdb8dc022b1a7975556c53c86f9f0aa5f534b98977b171857c2c9" 514 | 515 | [[package]] 516 | name = "calloop" 517 | version = "0.12.4" 518 | source = "registry+https://github.com/rust-lang/crates.io-index" 519 | checksum = "fba7adb4dd5aa98e5553510223000e7148f621165ec5f9acd7113f6ca4995298" 520 | dependencies = [ 521 | "bitflags 2.5.0", 522 | "log", 523 | "polling", 524 | "rustix", 525 | "slab", 526 | "thiserror", 527 | ] 528 | 529 | [[package]] 530 | name = "calloop-wayland-source" 531 | version = "0.2.0" 532 | source = "registry+https://github.com/rust-lang/crates.io-index" 533 | checksum = "0f0ea9b9476c7fad82841a8dbb380e2eae480c21910feba80725b46931ed8f02" 534 | dependencies = [ 535 | "calloop", 536 | "rustix", 537 | "wayland-backend", 538 | "wayland-client", 539 | ] 540 | 541 | [[package]] 542 | name = "cc" 543 | version = "1.0.97" 544 | source = "registry+https://github.com/rust-lang/crates.io-index" 545 | checksum = "099a5357d84c4c61eb35fc8eafa9a79a902c2f76911e5747ced4e032edd8d9b4" 546 | dependencies = [ 547 | "jobserver", 548 | "libc", 549 | "once_cell", 550 | ] 551 | 552 | [[package]] 553 | name = "cesu8" 554 | version = "1.1.0" 555 | source = "registry+https://github.com/rust-lang/crates.io-index" 556 | checksum = "6d43a04d8753f35258c91f8ec639f792891f748a1edbd759cf1dcea3382ad83c" 557 | 558 | [[package]] 559 | name = "cexpr" 560 | version = "0.6.0" 561 | source = "registry+https://github.com/rust-lang/crates.io-index" 562 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 563 | dependencies = [ 564 | "nom", 565 | ] 566 | 567 | [[package]] 568 | name = "cfg-if" 569 | version = "1.0.0" 570 | source = "registry+https://github.com/rust-lang/crates.io-index" 571 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 572 | 573 | [[package]] 574 | name = "cfg_aliases" 575 | version = "0.1.1" 576 | source = "registry+https://github.com/rust-lang/crates.io-index" 577 | checksum = "fd16c4719339c4530435d38e511904438d07cce7950afa3718a84ac36c10e89e" 578 | 579 | [[package]] 580 | name = "cfg_aliases" 581 | version = "0.2.1" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" 584 | 585 | [[package]] 586 | name = "chrono" 587 | version = "0.4.38" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | checksum = "a21f936df1771bf62b77f047b726c4625ff2e8aa607c01ec06e5a05bd8463401" 590 | dependencies = [ 591 | "android-tzdata", 592 | "iana-time-zone", 593 | "js-sys", 594 | "num-traits", 595 | "wasm-bindgen", 596 | "windows-targets 0.52.5", 597 | ] 598 | 599 | [[package]] 600 | name = "clang-sys" 601 | version = "1.7.0" 602 | source = "registry+https://github.com/rust-lang/crates.io-index" 603 | checksum = "67523a3b4be3ce1989d607a828d036249522dd9c1c8de7f4dd2dae43a37369d1" 604 | dependencies = [ 605 | "glob", 606 | "libc", 607 | "libloading 0.8.3", 608 | ] 609 | 610 | [[package]] 611 | name = "claxon" 612 | version = "0.4.3" 613 | source = "registry+https://github.com/rust-lang/crates.io-index" 614 | checksum = "4bfbf56724aa9eca8afa4fcfadeb479e722935bb2a0900c2d37e0cc477af0688" 615 | 616 | [[package]] 617 | name = "clipboard-win" 618 | version = "5.3.1" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | checksum = "79f4473f5144e20d9aceaf2972478f06ddf687831eafeeb434fbaf0acc4144ad" 621 | dependencies = [ 622 | "error-code", 623 | ] 624 | 625 | [[package]] 626 | name = "clipboard_macos" 627 | version = "0.1.0" 628 | source = "registry+https://github.com/rust-lang/crates.io-index" 629 | checksum = "145a7f9e9b89453bc0a5e32d166456405d389cea5b578f57f1274b1397588a95" 630 | dependencies = [ 631 | "objc", 632 | "objc-foundation", 633 | "objc_id", 634 | ] 635 | 636 | [[package]] 637 | name = "clipboard_wayland" 638 | version = "0.2.2" 639 | source = "registry+https://github.com/rust-lang/crates.io-index" 640 | checksum = "003f886bc4e2987729d10c1db3424e7f80809f3fc22dbc16c685738887cb37b8" 641 | dependencies = [ 642 | "smithay-clipboard", 643 | ] 644 | 645 | [[package]] 646 | name = "clipboard_x11" 647 | version = "0.4.2" 648 | source = "registry+https://github.com/rust-lang/crates.io-index" 649 | checksum = "4274ea815e013e0f9f04a2633423e14194e408a0576c943ce3d14ca56c50031c" 650 | dependencies = [ 651 | "thiserror", 652 | "x11rb", 653 | ] 654 | 655 | [[package]] 656 | name = "cocoa" 657 | version = "0.25.0" 658 | source = "registry+https://github.com/rust-lang/crates.io-index" 659 | checksum = "f6140449f97a6e97f9511815c5632d84c8aacf8ac271ad77c559218161a1373c" 660 | dependencies = [ 661 | "bitflags 1.3.2", 662 | "block", 663 | "cocoa-foundation", 664 | "core-foundation", 665 | "core-graphics", 666 | "foreign-types", 667 | "libc", 668 | "objc", 669 | ] 670 | 671 | [[package]] 672 | name = "cocoa-foundation" 673 | version = "0.1.2" 674 | source = "registry+https://github.com/rust-lang/crates.io-index" 675 | checksum = "8c6234cbb2e4c785b456c0644748b1ac416dd045799740356f8363dfe00c93f7" 676 | dependencies = [ 677 | "bitflags 1.3.2", 678 | "block", 679 | "core-foundation", 680 | "core-graphics-types", 681 | "libc", 682 | "objc", 683 | ] 684 | 685 | [[package]] 686 | name = "codespan-reporting" 687 | version = "0.11.1" 688 | source = "registry+https://github.com/rust-lang/crates.io-index" 689 | checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" 690 | dependencies = [ 691 | "termcolor", 692 | "unicode-width", 693 | ] 694 | 695 | [[package]] 696 | name = "color_quant" 697 | version = "1.1.0" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | checksum = "3d7b894f5411737b7867f4827955924d7c254fc9f4d91a6aad6b097804b1018b" 700 | 701 | [[package]] 702 | name = "com" 703 | version = "0.6.0" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | checksum = "7e17887fd17353b65b1b2ef1c526c83e26cd72e74f598a8dc1bee13a48f3d9f6" 706 | dependencies = [ 707 | "com_macros", 708 | ] 709 | 710 | [[package]] 711 | name = "com_macros" 712 | version = "0.6.0" 713 | source = "registry+https://github.com/rust-lang/crates.io-index" 714 | checksum = "d375883580a668c7481ea6631fc1a8863e33cc335bf56bfad8d7e6d4b04b13a5" 715 | dependencies = [ 716 | "com_macros_support", 717 | "proc-macro2", 718 | "syn 1.0.109", 719 | ] 720 | 721 | [[package]] 722 | name = "com_macros_support" 723 | version = "0.6.0" 724 | source = "registry+https://github.com/rust-lang/crates.io-index" 725 | checksum = "ad899a1087a9296d5644792d7cb72b8e34c1bec8e7d4fbc002230169a6e8710c" 726 | dependencies = [ 727 | "proc-macro2", 728 | "quote", 729 | "syn 1.0.109", 730 | ] 731 | 732 | [[package]] 733 | name = "combine" 734 | version = "4.6.7" 735 | source = "registry+https://github.com/rust-lang/crates.io-index" 736 | checksum = "ba5a308b75df32fe02788e748662718f03fde005016435c444eea572398219fd" 737 | dependencies = [ 738 | "bytes", 739 | "memchr", 740 | ] 741 | 742 | [[package]] 743 | name = "concurrent-queue" 744 | version = "2.5.0" 745 | source = "registry+https://github.com/rust-lang/crates.io-index" 746 | checksum = "4ca0197aee26d1ae37445ee532fefce43251d24cc7c166799f4d46817f1d3973" 747 | dependencies = [ 748 | "crossbeam-utils", 749 | ] 750 | 751 | [[package]] 752 | name = "core-foundation" 753 | version = "0.9.4" 754 | source = "registry+https://github.com/rust-lang/crates.io-index" 755 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 756 | dependencies = [ 757 | "core-foundation-sys", 758 | "libc", 759 | ] 760 | 761 | [[package]] 762 | name = "core-foundation-sys" 763 | version = "0.8.6" 764 | source = "registry+https://github.com/rust-lang/crates.io-index" 765 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 766 | 767 | [[package]] 768 | name = "core-graphics" 769 | version = "0.23.2" 770 | source = "registry+https://github.com/rust-lang/crates.io-index" 771 | checksum = "c07782be35f9e1140080c6b96f0d44b739e2278479f64e02fdab4e32dfd8b081" 772 | dependencies = [ 773 | "bitflags 1.3.2", 774 | "core-foundation", 775 | "core-graphics-types", 776 | "foreign-types", 777 | "libc", 778 | ] 779 | 780 | [[package]] 781 | name = "core-graphics-types" 782 | version = "0.1.3" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "45390e6114f68f718cc7a830514a96f903cccd70d02a8f6d9f643ac4ba45afaf" 785 | dependencies = [ 786 | "bitflags 1.3.2", 787 | "core-foundation", 788 | "libc", 789 | ] 790 | 791 | [[package]] 792 | name = "coreaudio-rs" 793 | version = "0.11.3" 794 | source = "registry+https://github.com/rust-lang/crates.io-index" 795 | checksum = "321077172d79c662f64f5071a03120748d5bb652f5231570141be24cfcd2bace" 796 | dependencies = [ 797 | "bitflags 1.3.2", 798 | "core-foundation-sys", 799 | "coreaudio-sys", 800 | ] 801 | 802 | [[package]] 803 | name = "coreaudio-sys" 804 | version = "0.2.15" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "7f01585027057ff5f0a5bf276174ae4c1594a2c5bde93d5f46a016d76270f5a9" 807 | dependencies = [ 808 | "bindgen", 809 | ] 810 | 811 | [[package]] 812 | name = "cosmic-text" 813 | version = "0.10.0" 814 | source = "registry+https://github.com/rust-lang/crates.io-index" 815 | checksum = "75acbfb314aeb4f5210d379af45ed1ec2c98c7f1790bf57b8a4c562ac0c51b71" 816 | dependencies = [ 817 | "fontdb", 818 | "libm", 819 | "log", 820 | "rangemap", 821 | "rustc-hash", 822 | "rustybuzz", 823 | "self_cell", 824 | "swash", 825 | "sys-locale", 826 | "unicode-bidi", 827 | "unicode-linebreak", 828 | "unicode-script", 829 | "unicode-segmentation", 830 | ] 831 | 832 | [[package]] 833 | name = "cpal" 834 | version = "0.15.3" 835 | source = "registry+https://github.com/rust-lang/crates.io-index" 836 | checksum = "873dab07c8f743075e57f524c583985fbaf745602acbe916a01539364369a779" 837 | dependencies = [ 838 | "alsa", 839 | "core-foundation-sys", 840 | "coreaudio-rs", 841 | "dasp_sample", 842 | "jni", 843 | "js-sys", 844 | "libc", 845 | "mach2", 846 | "ndk", 847 | "ndk-context", 848 | "oboe", 849 | "wasm-bindgen", 850 | "wasm-bindgen-futures", 851 | "web-sys", 852 | "windows 0.54.0", 853 | ] 854 | 855 | [[package]] 856 | name = "cpufeatures" 857 | version = "0.2.12" 858 | source = "registry+https://github.com/rust-lang/crates.io-index" 859 | checksum = "53fe5e26ff1b7aef8bca9c6080520cfb8d9333c7568e1829cef191a9723e5504" 860 | dependencies = [ 861 | "libc", 862 | ] 863 | 864 | [[package]] 865 | name = "crc32fast" 866 | version = "1.4.0" 867 | source = "registry+https://github.com/rust-lang/crates.io-index" 868 | checksum = "b3855a8a784b474f333699ef2bbca9db2c4a1f6d9088a90a2d25b1eb53111eaa" 869 | dependencies = [ 870 | "cfg-if", 871 | ] 872 | 873 | [[package]] 874 | name = "crossbeam-deque" 875 | version = "0.8.5" 876 | source = "registry+https://github.com/rust-lang/crates.io-index" 877 | checksum = "613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d" 878 | dependencies = [ 879 | "crossbeam-epoch", 880 | "crossbeam-utils", 881 | ] 882 | 883 | [[package]] 884 | name = "crossbeam-epoch" 885 | version = "0.9.18" 886 | source = "registry+https://github.com/rust-lang/crates.io-index" 887 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 888 | dependencies = [ 889 | "crossbeam-utils", 890 | ] 891 | 892 | [[package]] 893 | name = "crossbeam-utils" 894 | version = "0.8.19" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "248e3bacc7dc6baa3b21e405ee045c3047101a49145e7e9eca583ab4c2ca5345" 897 | 898 | [[package]] 899 | name = "crunchy" 900 | version = "0.2.2" 901 | source = "registry+https://github.com/rust-lang/crates.io-index" 902 | checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" 903 | 904 | [[package]] 905 | name = "crypto-common" 906 | version = "0.1.6" 907 | source = "registry+https://github.com/rust-lang/crates.io-index" 908 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 909 | dependencies = [ 910 | "generic-array", 911 | "typenum", 912 | ] 913 | 914 | [[package]] 915 | name = "ctor" 916 | version = "0.2.8" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "edb49164822f3ee45b17acd4a208cfc1251410cf0cad9a833234c9890774dd9f" 919 | dependencies = [ 920 | "quote", 921 | "syn 2.0.63", 922 | ] 923 | 924 | [[package]] 925 | name = "cursor-icon" 926 | version = "1.1.0" 927 | source = "registry+https://github.com/rust-lang/crates.io-index" 928 | checksum = "96a6ac251f4a2aca6b3f91340350eab87ae57c3f127ffeb585e92bd336717991" 929 | 930 | [[package]] 931 | name = "d3d12" 932 | version = "0.19.0" 933 | source = "registry+https://github.com/rust-lang/crates.io-index" 934 | checksum = "3e3d747f100290a1ca24b752186f61f6637e1deffe3bf6320de6fcb29510a307" 935 | dependencies = [ 936 | "bitflags 2.5.0", 937 | "libloading 0.8.3", 938 | "winapi", 939 | ] 940 | 941 | [[package]] 942 | name = "dasp_sample" 943 | version = "0.11.0" 944 | source = "registry+https://github.com/rust-lang/crates.io-index" 945 | checksum = "0c87e182de0887fd5361989c677c4e8f5000cd9491d6d563161a8f3a5519fc7f" 946 | 947 | [[package]] 948 | name = "deci-player" 949 | version = "0.1.0" 950 | dependencies = [ 951 | "iced", 952 | "iced_aw", 953 | "itertools", 954 | "paste", 955 | "rfd", 956 | "rodio", 957 | "rustfft", 958 | "serde", 959 | "toml", 960 | ] 961 | 962 | [[package]] 963 | name = "deranged" 964 | version = "0.3.11" 965 | source = "registry+https://github.com/rust-lang/crates.io-index" 966 | checksum = "b42b6fa04a440b495c8b04d0e71b707c585f83cb9cb28cf8cd0d976c315e31b4" 967 | dependencies = [ 968 | "powerfmt", 969 | ] 970 | 971 | [[package]] 972 | name = "digest" 973 | version = "0.10.7" 974 | source = "registry+https://github.com/rust-lang/crates.io-index" 975 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 976 | dependencies = [ 977 | "block-buffer", 978 | "crypto-common", 979 | ] 980 | 981 | [[package]] 982 | name = "dispatch" 983 | version = "0.2.0" 984 | source = "registry+https://github.com/rust-lang/crates.io-index" 985 | checksum = "bd0c93bb4b0c6d9b77f4435b0ae98c24d17f1c45b2ff844c6151a07256ca923b" 986 | 987 | [[package]] 988 | name = "dlib" 989 | version = "0.5.2" 990 | source = "registry+https://github.com/rust-lang/crates.io-index" 991 | checksum = "330c60081dcc4c72131f8eb70510f1ac07223e5d4163db481a04a0befcffa412" 992 | dependencies = [ 993 | "libloading 0.8.3", 994 | ] 995 | 996 | [[package]] 997 | name = "downcast-rs" 998 | version = "1.2.1" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "75b325c5dbd37f80359721ad39aca5a29fb04c89279657cffdda8736d0c0b9d2" 1001 | 1002 | [[package]] 1003 | name = "drm" 1004 | version = "0.11.1" 1005 | source = "registry+https://github.com/rust-lang/crates.io-index" 1006 | checksum = "a0f8a69e60d75ae7dab4ef26a59ca99f2a89d4c142089b537775ae0c198bdcde" 1007 | dependencies = [ 1008 | "bitflags 2.5.0", 1009 | "bytemuck", 1010 | "drm-ffi", 1011 | "drm-fourcc", 1012 | "rustix", 1013 | ] 1014 | 1015 | [[package]] 1016 | name = "drm-ffi" 1017 | version = "0.7.1" 1018 | source = "registry+https://github.com/rust-lang/crates.io-index" 1019 | checksum = "41334f8405792483e32ad05fbb9c5680ff4e84491883d2947a4757dc54cb2ac6" 1020 | dependencies = [ 1021 | "drm-sys", 1022 | "rustix", 1023 | ] 1024 | 1025 | [[package]] 1026 | name = "drm-fourcc" 1027 | version = "2.2.0" 1028 | source = "registry+https://github.com/rust-lang/crates.io-index" 1029 | checksum = "0aafbcdb8afc29c1a7ee5fbe53b5d62f4565b35a042a662ca9fecd0b54dae6f4" 1030 | 1031 | [[package]] 1032 | name = "drm-sys" 1033 | version = "0.6.1" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | checksum = "2d09ff881f92f118b11105ba5e34ff8f4adf27b30dae8f12e28c193af1c83176" 1036 | dependencies = [ 1037 | "libc", 1038 | "linux-raw-sys 0.6.4", 1039 | ] 1040 | 1041 | [[package]] 1042 | name = "either" 1043 | version = "1.11.0" 1044 | source = "registry+https://github.com/rust-lang/crates.io-index" 1045 | checksum = "a47c1c47d2f5964e29c61246e81db715514cd532db6b5116a25ea3c03d6780a2" 1046 | 1047 | [[package]] 1048 | name = "encoding_rs" 1049 | version = "0.8.34" 1050 | source = "registry+https://github.com/rust-lang/crates.io-index" 1051 | checksum = "b45de904aa0b010bce2ab45264d0631681847fa7b6f2eaa7dab7619943bc4f59" 1052 | dependencies = [ 1053 | "cfg-if", 1054 | ] 1055 | 1056 | [[package]] 1057 | name = "endi" 1058 | version = "1.1.0" 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" 1060 | checksum = "a3d8a32ae18130a3c84dd492d4215c3d913c3b07c6b63c2eb3eb7ff1101ab7bf" 1061 | 1062 | [[package]] 1063 | name = "enumflags2" 1064 | version = "0.7.9" 1065 | source = "registry+https://github.com/rust-lang/crates.io-index" 1066 | checksum = "3278c9d5fb675e0a51dabcf4c0d355f692b064171535ba72361be1528a9d8e8d" 1067 | dependencies = [ 1068 | "enumflags2_derive", 1069 | "serde", 1070 | ] 1071 | 1072 | [[package]] 1073 | name = "enumflags2_derive" 1074 | version = "0.7.9" 1075 | source = "registry+https://github.com/rust-lang/crates.io-index" 1076 | checksum = "5c785274071b1b420972453b306eeca06acf4633829db4223b58a2a8c5953bc4" 1077 | dependencies = [ 1078 | "proc-macro2", 1079 | "quote", 1080 | "syn 2.0.63", 1081 | ] 1082 | 1083 | [[package]] 1084 | name = "equivalent" 1085 | version = "1.0.1" 1086 | source = "registry+https://github.com/rust-lang/crates.io-index" 1087 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 1088 | 1089 | [[package]] 1090 | name = "errno" 1091 | version = "0.3.9" 1092 | source = "registry+https://github.com/rust-lang/crates.io-index" 1093 | checksum = "534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba" 1094 | dependencies = [ 1095 | "libc", 1096 | "windows-sys 0.52.0", 1097 | ] 1098 | 1099 | [[package]] 1100 | name = "error-code" 1101 | version = "3.2.0" 1102 | source = "registry+https://github.com/rust-lang/crates.io-index" 1103 | checksum = "a0474425d51df81997e2f90a21591180b38eccf27292d755f3e30750225c175b" 1104 | 1105 | [[package]] 1106 | name = "etagere" 1107 | version = "0.2.10" 1108 | source = "registry+https://github.com/rust-lang/crates.io-index" 1109 | checksum = "306960881d6c46bd0dd6b7f07442a441418c08d0d3e63d8d080b0f64c6343e4e" 1110 | dependencies = [ 1111 | "euclid", 1112 | "svg_fmt", 1113 | ] 1114 | 1115 | [[package]] 1116 | name = "euclid" 1117 | version = "0.22.9" 1118 | source = "registry+https://github.com/rust-lang/crates.io-index" 1119 | checksum = "87f253bc5c813ca05792837a0ff4b3a580336b224512d48f7eda1d7dd9210787" 1120 | dependencies = [ 1121 | "num-traits", 1122 | ] 1123 | 1124 | [[package]] 1125 | name = "event-listener" 1126 | version = "4.0.3" 1127 | source = "registry+https://github.com/rust-lang/crates.io-index" 1128 | checksum = "67b215c49b2b248c855fb73579eb1f4f26c38ffdc12973e20e07b91d78d5646e" 1129 | dependencies = [ 1130 | "concurrent-queue", 1131 | "parking", 1132 | "pin-project-lite", 1133 | ] 1134 | 1135 | [[package]] 1136 | name = "event-listener" 1137 | version = "5.3.0" 1138 | source = "registry+https://github.com/rust-lang/crates.io-index" 1139 | checksum = "6d9944b8ca13534cdfb2800775f8dd4902ff3fc75a50101466decadfdf322a24" 1140 | dependencies = [ 1141 | "concurrent-queue", 1142 | "parking", 1143 | "pin-project-lite", 1144 | ] 1145 | 1146 | [[package]] 1147 | name = "event-listener-strategy" 1148 | version = "0.4.0" 1149 | source = "registry+https://github.com/rust-lang/crates.io-index" 1150 | checksum = "958e4d70b6d5e81971bebec42271ec641e7ff4e170a6fa605f2b8a8b65cb97d3" 1151 | dependencies = [ 1152 | "event-listener 4.0.3", 1153 | "pin-project-lite", 1154 | ] 1155 | 1156 | [[package]] 1157 | name = "event-listener-strategy" 1158 | version = "0.5.2" 1159 | source = "registry+https://github.com/rust-lang/crates.io-index" 1160 | checksum = "0f214dc438f977e6d4e3500aaa277f5ad94ca83fbbd9b1a15713ce2344ccc5a1" 1161 | dependencies = [ 1162 | "event-listener 5.3.0", 1163 | "pin-project-lite", 1164 | ] 1165 | 1166 | [[package]] 1167 | name = "exr" 1168 | version = "1.72.0" 1169 | source = "registry+https://github.com/rust-lang/crates.io-index" 1170 | checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" 1171 | dependencies = [ 1172 | "bit_field", 1173 | "flume", 1174 | "half", 1175 | "lebe", 1176 | "miniz_oxide", 1177 | "rayon-core", 1178 | "smallvec", 1179 | "zune-inflate", 1180 | ] 1181 | 1182 | [[package]] 1183 | name = "fast-srgb8" 1184 | version = "1.0.0" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | checksum = "dd2e7510819d6fbf51a5545c8f922716ecfb14df168a3242f7d33e0239efe6a1" 1187 | 1188 | [[package]] 1189 | name = "fastrand" 1190 | version = "2.1.0" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a" 1193 | 1194 | [[package]] 1195 | name = "fdeflate" 1196 | version = "0.3.4" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" 1199 | dependencies = [ 1200 | "simd-adler32", 1201 | ] 1202 | 1203 | [[package]] 1204 | name = "flate2" 1205 | version = "1.0.30" 1206 | source = "registry+https://github.com/rust-lang/crates.io-index" 1207 | checksum = "5f54427cfd1c7829e2a139fcefea601bf088ebca651d2bf53ebc600eac295dae" 1208 | dependencies = [ 1209 | "crc32fast", 1210 | "miniz_oxide", 1211 | ] 1212 | 1213 | [[package]] 1214 | name = "float_next_after" 1215 | version = "1.0.0" 1216 | source = "registry+https://github.com/rust-lang/crates.io-index" 1217 | checksum = "8bf7cc16383c4b8d58b9905a8509f02926ce3058053c056376248d958c9df1e8" 1218 | 1219 | [[package]] 1220 | name = "flume" 1221 | version = "0.11.0" 1222 | source = "registry+https://github.com/rust-lang/crates.io-index" 1223 | checksum = "55ac459de2512911e4b674ce33cf20befaba382d05b62b008afc1c8b57cbf181" 1224 | dependencies = [ 1225 | "spin", 1226 | ] 1227 | 1228 | [[package]] 1229 | name = "font-types" 1230 | version = "0.5.3" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | checksum = "bdf6aa1de86490d8e39e04589bd04eb5953cc2a5ef0c25e389e807f44fd24e41" 1233 | dependencies = [ 1234 | "bytemuck", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "fontconfig-parser" 1239 | version = "0.5.6" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d" 1242 | dependencies = [ 1243 | "roxmltree", 1244 | ] 1245 | 1246 | [[package]] 1247 | name = "fontdb" 1248 | version = "0.15.0" 1249 | source = "registry+https://github.com/rust-lang/crates.io-index" 1250 | checksum = "020e203f177c0fb250fb19455a252e838d2bbbce1f80f25ecc42402aafa8cd38" 1251 | dependencies = [ 1252 | "fontconfig-parser", 1253 | "log", 1254 | "memmap2 0.8.0", 1255 | "slotmap", 1256 | "tinyvec", 1257 | "ttf-parser 0.19.2", 1258 | ] 1259 | 1260 | [[package]] 1261 | name = "foreign-types" 1262 | version = "0.5.0" 1263 | source = "registry+https://github.com/rust-lang/crates.io-index" 1264 | checksum = "d737d9aa519fb7b749cbc3b962edcf310a8dd1f4b67c91c4f83975dbdd17d965" 1265 | dependencies = [ 1266 | "foreign-types-macros", 1267 | "foreign-types-shared", 1268 | ] 1269 | 1270 | [[package]] 1271 | name = "foreign-types-macros" 1272 | version = "0.2.3" 1273 | source = "registry+https://github.com/rust-lang/crates.io-index" 1274 | checksum = "1a5c6c585bc94aaf2c7b51dd4c2ba22680844aba4c687be581871a6f518c5742" 1275 | dependencies = [ 1276 | "proc-macro2", 1277 | "quote", 1278 | "syn 2.0.63", 1279 | ] 1280 | 1281 | [[package]] 1282 | name = "foreign-types-shared" 1283 | version = "0.3.1" 1284 | source = "registry+https://github.com/rust-lang/crates.io-index" 1285 | checksum = "aa9a19cbb55df58761df49b23516a86d432839add4af60fc256da840f66ed35b" 1286 | 1287 | [[package]] 1288 | name = "form_urlencoded" 1289 | version = "1.2.1" 1290 | source = "registry+https://github.com/rust-lang/crates.io-index" 1291 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 1292 | dependencies = [ 1293 | "percent-encoding", 1294 | ] 1295 | 1296 | [[package]] 1297 | name = "futures" 1298 | version = "0.3.30" 1299 | source = "registry+https://github.com/rust-lang/crates.io-index" 1300 | checksum = "645c6916888f6cb6350d2550b80fb63e734897a8498abe35cfb732b6487804b0" 1301 | dependencies = [ 1302 | "futures-channel", 1303 | "futures-core", 1304 | "futures-executor", 1305 | "futures-io", 1306 | "futures-sink", 1307 | "futures-task", 1308 | "futures-util", 1309 | ] 1310 | 1311 | [[package]] 1312 | name = "futures-channel" 1313 | version = "0.3.30" 1314 | source = "registry+https://github.com/rust-lang/crates.io-index" 1315 | checksum = "eac8f7d7865dcb88bd4373ab671c8cf4508703796caa2b1985a9ca867b3fcb78" 1316 | dependencies = [ 1317 | "futures-core", 1318 | "futures-sink", 1319 | ] 1320 | 1321 | [[package]] 1322 | name = "futures-core" 1323 | version = "0.3.30" 1324 | source = "registry+https://github.com/rust-lang/crates.io-index" 1325 | checksum = "dfc6580bb841c5a68e9ef15c77ccc837b40a7504914d52e47b8b0e9bbda25a1d" 1326 | 1327 | [[package]] 1328 | name = "futures-executor" 1329 | version = "0.3.30" 1330 | source = "registry+https://github.com/rust-lang/crates.io-index" 1331 | checksum = "a576fc72ae164fca6b9db127eaa9a9dda0d61316034f33a0a0d4eda41f02b01d" 1332 | dependencies = [ 1333 | "futures-core", 1334 | "futures-task", 1335 | "futures-util", 1336 | "num_cpus", 1337 | ] 1338 | 1339 | [[package]] 1340 | name = "futures-io" 1341 | version = "0.3.30" 1342 | source = "registry+https://github.com/rust-lang/crates.io-index" 1343 | checksum = "a44623e20b9681a318efdd71c299b6b222ed6f231972bfe2f224ebad6311f0c1" 1344 | 1345 | [[package]] 1346 | name = "futures-lite" 1347 | version = "2.3.0" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "52527eb5074e35e9339c6b4e8d12600c7128b68fb25dcb9fa9dec18f7c25f3a5" 1350 | dependencies = [ 1351 | "fastrand", 1352 | "futures-core", 1353 | "futures-io", 1354 | "parking", 1355 | "pin-project-lite", 1356 | ] 1357 | 1358 | [[package]] 1359 | name = "futures-macro" 1360 | version = "0.3.30" 1361 | source = "registry+https://github.com/rust-lang/crates.io-index" 1362 | checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac" 1363 | dependencies = [ 1364 | "proc-macro2", 1365 | "quote", 1366 | "syn 2.0.63", 1367 | ] 1368 | 1369 | [[package]] 1370 | name = "futures-sink" 1371 | version = "0.3.30" 1372 | source = "registry+https://github.com/rust-lang/crates.io-index" 1373 | checksum = "9fb8e00e87438d937621c1c6269e53f536c14d3fbd6a042bb24879e57d474fb5" 1374 | 1375 | [[package]] 1376 | name = "futures-task" 1377 | version = "0.3.30" 1378 | source = "registry+https://github.com/rust-lang/crates.io-index" 1379 | checksum = "38d84fa142264698cdce1a9f9172cf383a0c82de1bddcf3092901442c4097004" 1380 | 1381 | [[package]] 1382 | name = "futures-util" 1383 | version = "0.3.30" 1384 | source = "registry+https://github.com/rust-lang/crates.io-index" 1385 | checksum = "3d6401deb83407ab3da39eba7e33987a73c3df0c82b4bb5813ee871c19c41d48" 1386 | dependencies = [ 1387 | "futures-channel", 1388 | "futures-core", 1389 | "futures-io", 1390 | "futures-macro", 1391 | "futures-sink", 1392 | "futures-task", 1393 | "memchr", 1394 | "pin-project-lite", 1395 | "pin-utils", 1396 | "slab", 1397 | ] 1398 | 1399 | [[package]] 1400 | name = "generic-array" 1401 | version = "0.14.7" 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" 1403 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 1404 | dependencies = [ 1405 | "typenum", 1406 | "version_check", 1407 | ] 1408 | 1409 | [[package]] 1410 | name = "gethostname" 1411 | version = "0.4.3" 1412 | source = "registry+https://github.com/rust-lang/crates.io-index" 1413 | checksum = "0176e0459c2e4a1fe232f984bca6890e681076abb9934f6cea7c326f3fc47818" 1414 | dependencies = [ 1415 | "libc", 1416 | "windows-targets 0.48.5", 1417 | ] 1418 | 1419 | [[package]] 1420 | name = "getrandom" 1421 | version = "0.2.15" 1422 | source = "registry+https://github.com/rust-lang/crates.io-index" 1423 | checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" 1424 | dependencies = [ 1425 | "cfg-if", 1426 | "libc", 1427 | "wasi", 1428 | ] 1429 | 1430 | [[package]] 1431 | name = "gif" 1432 | version = "0.13.1" 1433 | source = "registry+https://github.com/rust-lang/crates.io-index" 1434 | checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" 1435 | dependencies = [ 1436 | "color_quant", 1437 | "weezl", 1438 | ] 1439 | 1440 | [[package]] 1441 | name = "gimli" 1442 | version = "0.28.1" 1443 | source = "registry+https://github.com/rust-lang/crates.io-index" 1444 | checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" 1445 | 1446 | [[package]] 1447 | name = "gl_generator" 1448 | version = "0.14.0" 1449 | source = "registry+https://github.com/rust-lang/crates.io-index" 1450 | checksum = "1a95dfc23a2b4a9a2f5ab41d194f8bfda3cabec42af4e39f08c339eb2a0c124d" 1451 | dependencies = [ 1452 | "khronos_api", 1453 | "log", 1454 | "xml-rs", 1455 | ] 1456 | 1457 | [[package]] 1458 | name = "glam" 1459 | version = "0.25.0" 1460 | source = "registry+https://github.com/rust-lang/crates.io-index" 1461 | checksum = "151665d9be52f9bb40fc7966565d39666f2d1e69233571b71b87791c7e0528b3" 1462 | 1463 | [[package]] 1464 | name = "glob" 1465 | version = "0.3.1" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 1468 | 1469 | [[package]] 1470 | name = "glow" 1471 | version = "0.13.1" 1472 | source = "registry+https://github.com/rust-lang/crates.io-index" 1473 | checksum = "bd348e04c43b32574f2de31c8bb397d96c9fcfa1371bd4ca6d8bdc464ab121b1" 1474 | dependencies = [ 1475 | "js-sys", 1476 | "slotmap", 1477 | "wasm-bindgen", 1478 | "web-sys", 1479 | ] 1480 | 1481 | [[package]] 1482 | name = "glutin_wgl_sys" 1483 | version = "0.5.0" 1484 | source = "registry+https://github.com/rust-lang/crates.io-index" 1485 | checksum = "6c8098adac955faa2d31079b65dc48841251f69efd3ac25477903fc424362ead" 1486 | dependencies = [ 1487 | "gl_generator", 1488 | ] 1489 | 1490 | [[package]] 1491 | name = "glyphon" 1492 | version = "0.5.0" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "6a62d0338e4056db6a73221c2fb2e30619452f6ea9651bac4110f51b0f7a7581" 1495 | dependencies = [ 1496 | "cosmic-text", 1497 | "etagere", 1498 | "lru", 1499 | "wgpu", 1500 | ] 1501 | 1502 | [[package]] 1503 | name = "gpu-alloc" 1504 | version = "0.6.0" 1505 | source = "registry+https://github.com/rust-lang/crates.io-index" 1506 | checksum = "fbcd2dba93594b227a1f57ee09b8b9da8892c34d55aa332e034a228d0fe6a171" 1507 | dependencies = [ 1508 | "bitflags 2.5.0", 1509 | "gpu-alloc-types", 1510 | ] 1511 | 1512 | [[package]] 1513 | name = "gpu-alloc-types" 1514 | version = "0.3.0" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "98ff03b468aa837d70984d55f5d3f846f6ec31fe34bbb97c4f85219caeee1ca4" 1517 | dependencies = [ 1518 | "bitflags 2.5.0", 1519 | ] 1520 | 1521 | [[package]] 1522 | name = "gpu-allocator" 1523 | version = "0.25.0" 1524 | source = "registry+https://github.com/rust-lang/crates.io-index" 1525 | checksum = "6f56f6318968d03c18e1bcf4857ff88c61157e9da8e47c5f29055d60e1228884" 1526 | dependencies = [ 1527 | "log", 1528 | "presser", 1529 | "thiserror", 1530 | "winapi", 1531 | "windows 0.52.0", 1532 | ] 1533 | 1534 | [[package]] 1535 | name = "gpu-descriptor" 1536 | version = "0.2.4" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "cc11df1ace8e7e564511f53af41f3e42ddc95b56fd07b3f4445d2a6048bc682c" 1539 | dependencies = [ 1540 | "bitflags 2.5.0", 1541 | "gpu-descriptor-types", 1542 | "hashbrown", 1543 | ] 1544 | 1545 | [[package]] 1546 | name = "gpu-descriptor-types" 1547 | version = "0.1.2" 1548 | source = "registry+https://github.com/rust-lang/crates.io-index" 1549 | checksum = "6bf0b36e6f090b7e1d8a4b49c0cb81c1f8376f72198c65dd3ad9ff3556b8b78c" 1550 | dependencies = [ 1551 | "bitflags 2.5.0", 1552 | ] 1553 | 1554 | [[package]] 1555 | name = "guillotiere" 1556 | version = "0.6.2" 1557 | source = "registry+https://github.com/rust-lang/crates.io-index" 1558 | checksum = "b62d5865c036cb1393e23c50693df631d3f5d7bcca4c04fe4cc0fd592e74a782" 1559 | dependencies = [ 1560 | "euclid", 1561 | "svg_fmt", 1562 | ] 1563 | 1564 | [[package]] 1565 | name = "half" 1566 | version = "2.4.1" 1567 | source = "registry+https://github.com/rust-lang/crates.io-index" 1568 | checksum = "6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888" 1569 | dependencies = [ 1570 | "cfg-if", 1571 | "crunchy", 1572 | ] 1573 | 1574 | [[package]] 1575 | name = "hashbrown" 1576 | version = "0.14.5" 1577 | source = "registry+https://github.com/rust-lang/crates.io-index" 1578 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1579 | dependencies = [ 1580 | "ahash", 1581 | "allocator-api2", 1582 | ] 1583 | 1584 | [[package]] 1585 | name = "hassle-rs" 1586 | version = "0.11.0" 1587 | source = "registry+https://github.com/rust-lang/crates.io-index" 1588 | checksum = "af2a7e73e1f34c48da31fb668a907f250794837e08faa144fd24f0b8b741e890" 1589 | dependencies = [ 1590 | "bitflags 2.5.0", 1591 | "com", 1592 | "libc", 1593 | "libloading 0.8.3", 1594 | "thiserror", 1595 | "widestring", 1596 | "winapi", 1597 | ] 1598 | 1599 | [[package]] 1600 | name = "heck" 1601 | version = "0.4.1" 1602 | source = "registry+https://github.com/rust-lang/crates.io-index" 1603 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 1604 | 1605 | [[package]] 1606 | name = "hermit-abi" 1607 | version = "0.3.9" 1608 | source = "registry+https://github.com/rust-lang/crates.io-index" 1609 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 1610 | 1611 | [[package]] 1612 | name = "hex" 1613 | version = "0.4.3" 1614 | source = "registry+https://github.com/rust-lang/crates.io-index" 1615 | checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" 1616 | 1617 | [[package]] 1618 | name = "hexf-parse" 1619 | version = "0.2.1" 1620 | source = "registry+https://github.com/rust-lang/crates.io-index" 1621 | checksum = "dfa686283ad6dd069f105e5ab091b04c62850d3e4cf5d67debad1933f55023df" 1622 | 1623 | [[package]] 1624 | name = "hound" 1625 | version = "3.5.1" 1626 | source = "registry+https://github.com/rust-lang/crates.io-index" 1627 | checksum = "62adaabb884c94955b19907d60019f4e145d091c75345379e70d1ee696f7854f" 1628 | 1629 | [[package]] 1630 | name = "iana-time-zone" 1631 | version = "0.1.60" 1632 | source = "registry+https://github.com/rust-lang/crates.io-index" 1633 | checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" 1634 | dependencies = [ 1635 | "android_system_properties", 1636 | "core-foundation-sys", 1637 | "iana-time-zone-haiku", 1638 | "js-sys", 1639 | "wasm-bindgen", 1640 | "windows-core 0.52.0", 1641 | ] 1642 | 1643 | [[package]] 1644 | name = "iana-time-zone-haiku" 1645 | version = "0.1.2" 1646 | source = "registry+https://github.com/rust-lang/crates.io-index" 1647 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1648 | dependencies = [ 1649 | "cc", 1650 | ] 1651 | 1652 | [[package]] 1653 | name = "iced" 1654 | version = "0.12.1" 1655 | source = "registry+https://github.com/rust-lang/crates.io-index" 1656 | checksum = "7d4eb0fbbefb8c428b70680e77ed9013887b17c1d6be366b40f264f956d1a096" 1657 | dependencies = [ 1658 | "iced_core", 1659 | "iced_futures", 1660 | "iced_renderer", 1661 | "iced_widget", 1662 | "iced_winit", 1663 | "image", 1664 | "thiserror", 1665 | ] 1666 | 1667 | [[package]] 1668 | name = "iced_aw" 1669 | version = "0.8.0" 1670 | source = "registry+https://github.com/rust-lang/crates.io-index" 1671 | checksum = "129deba9897243dd59c2038e2267a691e392c94e569680066ee63b1164429490" 1672 | dependencies = [ 1673 | "cfg-if", 1674 | "chrono", 1675 | "iced", 1676 | "itertools", 1677 | "num-traits", 1678 | "once_cell", 1679 | "time", 1680 | ] 1681 | 1682 | [[package]] 1683 | name = "iced_core" 1684 | version = "0.12.3" 1685 | source = "registry+https://github.com/rust-lang/crates.io-index" 1686 | checksum = "7d7e6bbd197f311ed3d8b71651876b0ce01318fde52cda862a9a7a4373c9b930" 1687 | dependencies = [ 1688 | "bitflags 2.5.0", 1689 | "glam", 1690 | "log", 1691 | "num-traits", 1692 | "palette", 1693 | "raw-window-handle", 1694 | "smol_str", 1695 | "thiserror", 1696 | "web-time", 1697 | "xxhash-rust", 1698 | ] 1699 | 1700 | [[package]] 1701 | name = "iced_futures" 1702 | version = "0.12.0" 1703 | source = "registry+https://github.com/rust-lang/crates.io-index" 1704 | checksum = "370bad88fb3832cbeeb3fa6c486b4701fb7e8da32a753b3101d4ce81fc1d9497" 1705 | dependencies = [ 1706 | "futures", 1707 | "iced_core", 1708 | "log", 1709 | "tokio", 1710 | "wasm-bindgen-futures", 1711 | "wasm-timer", 1712 | ] 1713 | 1714 | [[package]] 1715 | name = "iced_graphics" 1716 | version = "0.12.1" 1717 | source = "registry+https://github.com/rust-lang/crates.io-index" 1718 | checksum = "6a044c193ef0840eacabfa05424717331d1fc5b3ecb9a89316200c75da2ba9a4" 1719 | dependencies = [ 1720 | "bitflags 2.5.0", 1721 | "bytemuck", 1722 | "cosmic-text", 1723 | "half", 1724 | "iced_core", 1725 | "iced_futures", 1726 | "image", 1727 | "kamadak-exif", 1728 | "log", 1729 | "lyon_path", 1730 | "once_cell", 1731 | "raw-window-handle", 1732 | "rustc-hash", 1733 | "thiserror", 1734 | "unicode-segmentation", 1735 | "xxhash-rust", 1736 | ] 1737 | 1738 | [[package]] 1739 | name = "iced_renderer" 1740 | version = "0.12.1" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "5c281e03001d566058f53dec9325bbe61c62da715341206d2627f57a3ecc7f69" 1743 | dependencies = [ 1744 | "iced_graphics", 1745 | "iced_tiny_skia", 1746 | "iced_wgpu", 1747 | "log", 1748 | "thiserror", 1749 | ] 1750 | 1751 | [[package]] 1752 | name = "iced_runtime" 1753 | version = "0.12.1" 1754 | source = "registry+https://github.com/rust-lang/crates.io-index" 1755 | checksum = "a79f852c01cc6d61663c94379cb3974ac3ad315a28c504e847d573e094f46822" 1756 | dependencies = [ 1757 | "iced_core", 1758 | "iced_futures", 1759 | "raw-window-handle", 1760 | "thiserror", 1761 | ] 1762 | 1763 | [[package]] 1764 | name = "iced_style" 1765 | version = "0.12.1" 1766 | source = "registry+https://github.com/rust-lang/crates.io-index" 1767 | checksum = "2ea42a740915d2a5a9ff9c3aa0bca28b16e9fb660bc8f675eed71d186cadb579" 1768 | dependencies = [ 1769 | "iced_core", 1770 | "once_cell", 1771 | "palette", 1772 | ] 1773 | 1774 | [[package]] 1775 | name = "iced_tiny_skia" 1776 | version = "0.12.1" 1777 | source = "registry+https://github.com/rust-lang/crates.io-index" 1778 | checksum = "8c2228781f4d381a1cbbd7905a9f077351aa8d37269094021d5d9e779f130aff" 1779 | dependencies = [ 1780 | "bytemuck", 1781 | "cosmic-text", 1782 | "iced_graphics", 1783 | "kurbo", 1784 | "log", 1785 | "rustc-hash", 1786 | "softbuffer", 1787 | "tiny-skia", 1788 | "xxhash-rust", 1789 | ] 1790 | 1791 | [[package]] 1792 | name = "iced_wgpu" 1793 | version = "0.12.1" 1794 | source = "registry+https://github.com/rust-lang/crates.io-index" 1795 | checksum = "e3c243b6700452886aac1ee1987e84d9fb43b56b53fea9a1eb67713fd0fde244" 1796 | dependencies = [ 1797 | "bitflags 2.5.0", 1798 | "bytemuck", 1799 | "futures", 1800 | "glam", 1801 | "glyphon", 1802 | "guillotiere", 1803 | "iced_graphics", 1804 | "log", 1805 | "lyon", 1806 | "once_cell", 1807 | "wgpu", 1808 | ] 1809 | 1810 | [[package]] 1811 | name = "iced_widget" 1812 | version = "0.12.3" 1813 | source = "registry+https://github.com/rust-lang/crates.io-index" 1814 | checksum = "7e01b2212adecf1cb80e2267f302c0e0c263e55f97812056949199ccf9f0b908" 1815 | dependencies = [ 1816 | "iced_renderer", 1817 | "iced_runtime", 1818 | "iced_style", 1819 | "num-traits", 1820 | "ouroboros", 1821 | "thiserror", 1822 | "unicode-segmentation", 1823 | ] 1824 | 1825 | [[package]] 1826 | name = "iced_winit" 1827 | version = "0.12.2" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "63f66831d0e399b93f631739121a6171780d344b275d56808b9504d8ca75c7d2" 1830 | dependencies = [ 1831 | "iced_graphics", 1832 | "iced_runtime", 1833 | "iced_style", 1834 | "log", 1835 | "thiserror", 1836 | "tracing", 1837 | "web-sys", 1838 | "winapi", 1839 | "window_clipboard", 1840 | "winit", 1841 | ] 1842 | 1843 | [[package]] 1844 | name = "icrate" 1845 | version = "0.0.4" 1846 | source = "registry+https://github.com/rust-lang/crates.io-index" 1847 | checksum = "99d3aaff8a54577104bafdf686ff18565c3b6903ca5782a2026ef06e2c7aa319" 1848 | dependencies = [ 1849 | "block2", 1850 | "dispatch", 1851 | "objc2", 1852 | ] 1853 | 1854 | [[package]] 1855 | name = "idna" 1856 | version = "0.5.0" 1857 | source = "registry+https://github.com/rust-lang/crates.io-index" 1858 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 1859 | dependencies = [ 1860 | "unicode-bidi", 1861 | "unicode-normalization", 1862 | ] 1863 | 1864 | [[package]] 1865 | name = "image" 1866 | version = "0.24.9" 1867 | source = "registry+https://github.com/rust-lang/crates.io-index" 1868 | checksum = "5690139d2f55868e080017335e4b94cb7414274c74f1669c84fb5feba2c9f69d" 1869 | dependencies = [ 1870 | "bytemuck", 1871 | "byteorder", 1872 | "color_quant", 1873 | "exr", 1874 | "gif", 1875 | "jpeg-decoder", 1876 | "num-traits", 1877 | "png", 1878 | "qoi", 1879 | "tiff", 1880 | ] 1881 | 1882 | [[package]] 1883 | name = "indexmap" 1884 | version = "2.2.6" 1885 | source = "registry+https://github.com/rust-lang/crates.io-index" 1886 | checksum = "168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26" 1887 | dependencies = [ 1888 | "equivalent", 1889 | "hashbrown", 1890 | ] 1891 | 1892 | [[package]] 1893 | name = "instant" 1894 | version = "0.1.12" 1895 | source = "registry+https://github.com/rust-lang/crates.io-index" 1896 | checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" 1897 | dependencies = [ 1898 | "cfg-if", 1899 | ] 1900 | 1901 | [[package]] 1902 | name = "itertools" 1903 | version = "0.12.1" 1904 | source = "registry+https://github.com/rust-lang/crates.io-index" 1905 | checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 1906 | dependencies = [ 1907 | "either", 1908 | ] 1909 | 1910 | [[package]] 1911 | name = "jni" 1912 | version = "0.21.1" 1913 | source = "registry+https://github.com/rust-lang/crates.io-index" 1914 | checksum = "1a87aa2bb7d2af34197c04845522473242e1aa17c12f4935d5856491a7fb8c97" 1915 | dependencies = [ 1916 | "cesu8", 1917 | "cfg-if", 1918 | "combine", 1919 | "jni-sys", 1920 | "log", 1921 | "thiserror", 1922 | "walkdir", 1923 | "windows-sys 0.45.0", 1924 | ] 1925 | 1926 | [[package]] 1927 | name = "jni-sys" 1928 | version = "0.3.0" 1929 | source = "registry+https://github.com/rust-lang/crates.io-index" 1930 | checksum = "8eaf4bc02d17cbdd7ff4c7438cafcdf7fb9a4613313ad11b4f8fefe7d3fa0130" 1931 | 1932 | [[package]] 1933 | name = "jobserver" 1934 | version = "0.1.31" 1935 | source = "registry+https://github.com/rust-lang/crates.io-index" 1936 | checksum = "d2b099aaa34a9751c5bf0878add70444e1ed2dd73f347be99003d4577277de6e" 1937 | dependencies = [ 1938 | "libc", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "jpeg-decoder" 1943 | version = "0.3.1" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" 1946 | dependencies = [ 1947 | "rayon", 1948 | ] 1949 | 1950 | [[package]] 1951 | name = "js-sys" 1952 | version = "0.3.69" 1953 | source = "registry+https://github.com/rust-lang/crates.io-index" 1954 | checksum = "29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d" 1955 | dependencies = [ 1956 | "wasm-bindgen", 1957 | ] 1958 | 1959 | [[package]] 1960 | name = "kamadak-exif" 1961 | version = "0.5.5" 1962 | source = "registry+https://github.com/rust-lang/crates.io-index" 1963 | checksum = "ef4fc70d0ab7e5b6bafa30216a6b48705ea964cdfc29c050f2412295eba58077" 1964 | dependencies = [ 1965 | "mutate_once", 1966 | ] 1967 | 1968 | [[package]] 1969 | name = "khronos-egl" 1970 | version = "6.0.0" 1971 | source = "registry+https://github.com/rust-lang/crates.io-index" 1972 | checksum = "6aae1df220ece3c0ada96b8153459b67eebe9ae9212258bb0134ae60416fdf76" 1973 | dependencies = [ 1974 | "libc", 1975 | "libloading 0.8.3", 1976 | "pkg-config", 1977 | ] 1978 | 1979 | [[package]] 1980 | name = "khronos_api" 1981 | version = "3.1.0" 1982 | source = "registry+https://github.com/rust-lang/crates.io-index" 1983 | checksum = "e2db585e1d738fc771bf08a151420d3ed193d9d895a36df7f6f8a9456b911ddc" 1984 | 1985 | [[package]] 1986 | name = "kurbo" 1987 | version = "0.10.4" 1988 | source = "registry+https://github.com/rust-lang/crates.io-index" 1989 | checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440" 1990 | dependencies = [ 1991 | "arrayvec", 1992 | "smallvec", 1993 | ] 1994 | 1995 | [[package]] 1996 | name = "lazy_static" 1997 | version = "1.4.0" 1998 | source = "registry+https://github.com/rust-lang/crates.io-index" 1999 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 2000 | 2001 | [[package]] 2002 | name = "lazycell" 2003 | version = "1.3.0" 2004 | source = "registry+https://github.com/rust-lang/crates.io-index" 2005 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 2006 | 2007 | [[package]] 2008 | name = "lebe" 2009 | version = "0.5.2" 2010 | source = "registry+https://github.com/rust-lang/crates.io-index" 2011 | checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" 2012 | 2013 | [[package]] 2014 | name = "lewton" 2015 | version = "0.10.2" 2016 | source = "registry+https://github.com/rust-lang/crates.io-index" 2017 | checksum = "777b48df9aaab155475a83a7df3070395ea1ac6902f5cd062b8f2b028075c030" 2018 | dependencies = [ 2019 | "byteorder", 2020 | "ogg", 2021 | "tinyvec", 2022 | ] 2023 | 2024 | [[package]] 2025 | name = "libc" 2026 | version = "0.2.154" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "ae743338b92ff9146ce83992f766a31066a91a8c84a45e0e9f21e7cf6de6d346" 2029 | 2030 | [[package]] 2031 | name = "libloading" 2032 | version = "0.7.4" 2033 | source = "registry+https://github.com/rust-lang/crates.io-index" 2034 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 2035 | dependencies = [ 2036 | "cfg-if", 2037 | "winapi", 2038 | ] 2039 | 2040 | [[package]] 2041 | name = "libloading" 2042 | version = "0.8.3" 2043 | source = "registry+https://github.com/rust-lang/crates.io-index" 2044 | checksum = "0c2a198fb6b0eada2a8df47933734e6d35d350665a33a3593d7164fa52c75c19" 2045 | dependencies = [ 2046 | "cfg-if", 2047 | "windows-targets 0.52.5", 2048 | ] 2049 | 2050 | [[package]] 2051 | name = "libm" 2052 | version = "0.2.8" 2053 | source = "registry+https://github.com/rust-lang/crates.io-index" 2054 | checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" 2055 | 2056 | [[package]] 2057 | name = "libredox" 2058 | version = "0.0.2" 2059 | source = "registry+https://github.com/rust-lang/crates.io-index" 2060 | checksum = "3af92c55d7d839293953fcd0fda5ecfe93297cfde6ffbdec13b41d99c0ba6607" 2061 | dependencies = [ 2062 | "bitflags 2.5.0", 2063 | "libc", 2064 | "redox_syscall 0.4.1", 2065 | ] 2066 | 2067 | [[package]] 2068 | name = "linux-raw-sys" 2069 | version = "0.4.13" 2070 | source = "registry+https://github.com/rust-lang/crates.io-index" 2071 | checksum = "01cda141df6706de531b6c46c3a33ecca755538219bd484262fa09410c13539c" 2072 | 2073 | [[package]] 2074 | name = "linux-raw-sys" 2075 | version = "0.6.4" 2076 | source = "registry+https://github.com/rust-lang/crates.io-index" 2077 | checksum = "f0b5399f6804fbab912acbd8878ed3532d506b7c951b8f9f164ef90fef39e3f4" 2078 | 2079 | [[package]] 2080 | name = "lock_api" 2081 | version = "0.4.12" 2082 | source = "registry+https://github.com/rust-lang/crates.io-index" 2083 | checksum = "07af8b9cdd281b7915f413fa73f29ebd5d55d0d3f0155584dade1ff18cea1b17" 2084 | dependencies = [ 2085 | "autocfg", 2086 | "scopeguard", 2087 | ] 2088 | 2089 | [[package]] 2090 | name = "log" 2091 | version = "0.4.21" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "90ed8c1e510134f979dbc4f070f87d4313098b704861a105fe34231c70a3901c" 2094 | 2095 | [[package]] 2096 | name = "lru" 2097 | version = "0.12.3" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "d3262e75e648fce39813cb56ac41f3c3e3f65217ebf3844d818d1f9398cfb0dc" 2100 | dependencies = [ 2101 | "hashbrown", 2102 | ] 2103 | 2104 | [[package]] 2105 | name = "lyon" 2106 | version = "1.0.1" 2107 | source = "registry+https://github.com/rust-lang/crates.io-index" 2108 | checksum = "91e7f9cda98b5430809e63ca5197b06c7d191bf7e26dfc467d5a3f0290e2a74f" 2109 | dependencies = [ 2110 | "lyon_algorithms", 2111 | "lyon_tessellation", 2112 | ] 2113 | 2114 | [[package]] 2115 | name = "lyon_algorithms" 2116 | version = "1.0.4" 2117 | source = "registry+https://github.com/rust-lang/crates.io-index" 2118 | checksum = "a3bca95f9a4955b3e4a821fbbcd5edfbd9be2a9a50bb5758173e5358bfb4c623" 2119 | dependencies = [ 2120 | "lyon_path", 2121 | "num-traits", 2122 | ] 2123 | 2124 | [[package]] 2125 | name = "lyon_geom" 2126 | version = "1.0.5" 2127 | source = "registry+https://github.com/rust-lang/crates.io-index" 2128 | checksum = "edecfb8d234a2b0be031ab02ebcdd9f3b9ee418fb35e265f7a540a48d197bff9" 2129 | dependencies = [ 2130 | "arrayvec", 2131 | "euclid", 2132 | "num-traits", 2133 | ] 2134 | 2135 | [[package]] 2136 | name = "lyon_path" 2137 | version = "1.0.4" 2138 | source = "registry+https://github.com/rust-lang/crates.io-index" 2139 | checksum = "ca507745ba7ccbc76e5c44e7b63b1a29d2b0d6126f375806a5bbaf657c7d6c45" 2140 | dependencies = [ 2141 | "lyon_geom", 2142 | "num-traits", 2143 | ] 2144 | 2145 | [[package]] 2146 | name = "lyon_tessellation" 2147 | version = "1.0.14" 2148 | source = "registry+https://github.com/rust-lang/crates.io-index" 2149 | checksum = "4470bd0b1f29eda66068ab1fd47719facda0a136b829bcca69287ed0ac40a134" 2150 | dependencies = [ 2151 | "float_next_after", 2152 | "lyon_path", 2153 | "num-traits", 2154 | ] 2155 | 2156 | [[package]] 2157 | name = "mach2" 2158 | version = "0.4.2" 2159 | source = "registry+https://github.com/rust-lang/crates.io-index" 2160 | checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" 2161 | dependencies = [ 2162 | "libc", 2163 | ] 2164 | 2165 | [[package]] 2166 | name = "malloc_buf" 2167 | version = "0.0.6" 2168 | source = "registry+https://github.com/rust-lang/crates.io-index" 2169 | checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" 2170 | dependencies = [ 2171 | "libc", 2172 | ] 2173 | 2174 | [[package]] 2175 | name = "memchr" 2176 | version = "2.7.2" 2177 | source = "registry+https://github.com/rust-lang/crates.io-index" 2178 | checksum = "6c8640c5d730cb13ebd907d8d04b52f55ac9a2eec55b440c8892f40d56c76c1d" 2179 | 2180 | [[package]] 2181 | name = "memmap2" 2182 | version = "0.8.0" 2183 | source = "registry+https://github.com/rust-lang/crates.io-index" 2184 | checksum = "43a5a03cefb0d953ec0be133036f14e109412fa594edc2f77227249db66cc3ed" 2185 | dependencies = [ 2186 | "libc", 2187 | ] 2188 | 2189 | [[package]] 2190 | name = "memmap2" 2191 | version = "0.9.4" 2192 | source = "registry+https://github.com/rust-lang/crates.io-index" 2193 | checksum = "fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322" 2194 | dependencies = [ 2195 | "libc", 2196 | ] 2197 | 2198 | [[package]] 2199 | name = "memoffset" 2200 | version = "0.9.1" 2201 | source = "registry+https://github.com/rust-lang/crates.io-index" 2202 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 2203 | dependencies = [ 2204 | "autocfg", 2205 | ] 2206 | 2207 | [[package]] 2208 | name = "metal" 2209 | version = "0.27.0" 2210 | source = "registry+https://github.com/rust-lang/crates.io-index" 2211 | checksum = "c43f73953f8cbe511f021b58f18c3ce1c3d1ae13fe953293e13345bf83217f25" 2212 | dependencies = [ 2213 | "bitflags 2.5.0", 2214 | "block", 2215 | "core-graphics-types", 2216 | "foreign-types", 2217 | "log", 2218 | "objc", 2219 | "paste", 2220 | ] 2221 | 2222 | [[package]] 2223 | name = "minimal-lexical" 2224 | version = "0.2.1" 2225 | source = "registry+https://github.com/rust-lang/crates.io-index" 2226 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 2227 | 2228 | [[package]] 2229 | name = "miniz_oxide" 2230 | version = "0.7.2" 2231 | source = "registry+https://github.com/rust-lang/crates.io-index" 2232 | checksum = "9d811f3e15f28568be3407c8e7fdb6514c1cda3cb30683f15b6a1a1dc4ea14a7" 2233 | dependencies = [ 2234 | "adler", 2235 | "simd-adler32", 2236 | ] 2237 | 2238 | [[package]] 2239 | name = "mutate_once" 2240 | version = "0.1.1" 2241 | source = "registry+https://github.com/rust-lang/crates.io-index" 2242 | checksum = "16cf681a23b4d0a43fc35024c176437f9dcd818db34e0f42ab456a0ee5ad497b" 2243 | 2244 | [[package]] 2245 | name = "naga" 2246 | version = "0.19.2" 2247 | source = "registry+https://github.com/rust-lang/crates.io-index" 2248 | checksum = "50e3524642f53d9af419ab5e8dd29d3ba155708267667c2f3f06c88c9e130843" 2249 | dependencies = [ 2250 | "bit-set", 2251 | "bitflags 2.5.0", 2252 | "codespan-reporting", 2253 | "hexf-parse", 2254 | "indexmap", 2255 | "log", 2256 | "num-traits", 2257 | "rustc-hash", 2258 | "spirv", 2259 | "termcolor", 2260 | "thiserror", 2261 | "unicode-xid", 2262 | ] 2263 | 2264 | [[package]] 2265 | name = "ndk" 2266 | version = "0.8.0" 2267 | source = "registry+https://github.com/rust-lang/crates.io-index" 2268 | checksum = "2076a31b7010b17a38c01907c45b945e8f11495ee4dd588309718901b1f7a5b7" 2269 | dependencies = [ 2270 | "bitflags 2.5.0", 2271 | "jni-sys", 2272 | "log", 2273 | "ndk-sys", 2274 | "num_enum", 2275 | "raw-window-handle", 2276 | "thiserror", 2277 | ] 2278 | 2279 | [[package]] 2280 | name = "ndk-context" 2281 | version = "0.1.1" 2282 | source = "registry+https://github.com/rust-lang/crates.io-index" 2283 | checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" 2284 | 2285 | [[package]] 2286 | name = "ndk-sys" 2287 | version = "0.5.0+25.2.9519653" 2288 | source = "registry+https://github.com/rust-lang/crates.io-index" 2289 | checksum = "8c196769dd60fd4f363e11d948139556a344e79d451aeb2fa2fd040738ef7691" 2290 | dependencies = [ 2291 | "jni-sys", 2292 | ] 2293 | 2294 | [[package]] 2295 | name = "nix" 2296 | version = "0.28.0" 2297 | source = "registry+https://github.com/rust-lang/crates.io-index" 2298 | checksum = "ab2156c4fce2f8df6c499cc1c763e4394b7482525bf2a9701c9d79d215f519e4" 2299 | dependencies = [ 2300 | "bitflags 2.5.0", 2301 | "cfg-if", 2302 | "cfg_aliases 0.1.1", 2303 | "libc", 2304 | "memoffset", 2305 | ] 2306 | 2307 | [[package]] 2308 | name = "nom" 2309 | version = "7.1.3" 2310 | source = "registry+https://github.com/rust-lang/crates.io-index" 2311 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 2312 | dependencies = [ 2313 | "memchr", 2314 | "minimal-lexical", 2315 | ] 2316 | 2317 | [[package]] 2318 | name = "num-complex" 2319 | version = "0.4.6" 2320 | source = "registry+https://github.com/rust-lang/crates.io-index" 2321 | checksum = "73f88a1307638156682bada9d7604135552957b7818057dcef22705b4d509495" 2322 | dependencies = [ 2323 | "num-traits", 2324 | ] 2325 | 2326 | [[package]] 2327 | name = "num-conv" 2328 | version = "0.1.0" 2329 | source = "registry+https://github.com/rust-lang/crates.io-index" 2330 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 2331 | 2332 | [[package]] 2333 | name = "num-derive" 2334 | version = "0.4.2" 2335 | source = "registry+https://github.com/rust-lang/crates.io-index" 2336 | checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" 2337 | dependencies = [ 2338 | "proc-macro2", 2339 | "quote", 2340 | "syn 2.0.63", 2341 | ] 2342 | 2343 | [[package]] 2344 | name = "num-integer" 2345 | version = "0.1.46" 2346 | source = "registry+https://github.com/rust-lang/crates.io-index" 2347 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 2348 | dependencies = [ 2349 | "num-traits", 2350 | ] 2351 | 2352 | [[package]] 2353 | name = "num-traits" 2354 | version = "0.2.19" 2355 | source = "registry+https://github.com/rust-lang/crates.io-index" 2356 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 2357 | dependencies = [ 2358 | "autocfg", 2359 | "libm", 2360 | ] 2361 | 2362 | [[package]] 2363 | name = "num_cpus" 2364 | version = "1.16.0" 2365 | source = "registry+https://github.com/rust-lang/crates.io-index" 2366 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 2367 | dependencies = [ 2368 | "hermit-abi", 2369 | "libc", 2370 | ] 2371 | 2372 | [[package]] 2373 | name = "num_enum" 2374 | version = "0.7.2" 2375 | source = "registry+https://github.com/rust-lang/crates.io-index" 2376 | checksum = "02339744ee7253741199f897151b38e72257d13802d4ee837285cc2990a90845" 2377 | dependencies = [ 2378 | "num_enum_derive", 2379 | ] 2380 | 2381 | [[package]] 2382 | name = "num_enum_derive" 2383 | version = "0.7.2" 2384 | source = "registry+https://github.com/rust-lang/crates.io-index" 2385 | checksum = "681030a937600a36906c185595136d26abfebb4aa9c65701cefcaf8578bb982b" 2386 | dependencies = [ 2387 | "proc-macro-crate", 2388 | "proc-macro2", 2389 | "quote", 2390 | "syn 2.0.63", 2391 | ] 2392 | 2393 | [[package]] 2394 | name = "num_threads" 2395 | version = "0.1.7" 2396 | source = "registry+https://github.com/rust-lang/crates.io-index" 2397 | checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" 2398 | dependencies = [ 2399 | "libc", 2400 | ] 2401 | 2402 | [[package]] 2403 | name = "objc" 2404 | version = "0.2.7" 2405 | source = "registry+https://github.com/rust-lang/crates.io-index" 2406 | checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" 2407 | dependencies = [ 2408 | "malloc_buf", 2409 | "objc_exception", 2410 | ] 2411 | 2412 | [[package]] 2413 | name = "objc-foundation" 2414 | version = "0.1.1" 2415 | source = "registry+https://github.com/rust-lang/crates.io-index" 2416 | checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" 2417 | dependencies = [ 2418 | "block", 2419 | "objc", 2420 | "objc_id", 2421 | ] 2422 | 2423 | [[package]] 2424 | name = "objc-sys" 2425 | version = "0.3.3" 2426 | source = "registry+https://github.com/rust-lang/crates.io-index" 2427 | checksum = "da284c198fb9b7b0603f8635185e85fbd5b64ee154b1ed406d489077de2d6d60" 2428 | 2429 | [[package]] 2430 | name = "objc2" 2431 | version = "0.4.1" 2432 | source = "registry+https://github.com/rust-lang/crates.io-index" 2433 | checksum = "559c5a40fdd30eb5e344fbceacf7595a81e242529fb4e21cf5f43fb4f11ff98d" 2434 | dependencies = [ 2435 | "objc-sys", 2436 | "objc2-encode", 2437 | ] 2438 | 2439 | [[package]] 2440 | name = "objc2-encode" 2441 | version = "3.0.0" 2442 | source = "registry+https://github.com/rust-lang/crates.io-index" 2443 | checksum = "d079845b37af429bfe5dfa76e6d087d788031045b25cfc6fd898486fd9847666" 2444 | 2445 | [[package]] 2446 | name = "objc_exception" 2447 | version = "0.1.2" 2448 | source = "registry+https://github.com/rust-lang/crates.io-index" 2449 | checksum = "ad970fb455818ad6cba4c122ad012fae53ae8b4795f86378bce65e4f6bab2ca4" 2450 | dependencies = [ 2451 | "cc", 2452 | ] 2453 | 2454 | [[package]] 2455 | name = "objc_id" 2456 | version = "0.1.1" 2457 | source = "registry+https://github.com/rust-lang/crates.io-index" 2458 | checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" 2459 | dependencies = [ 2460 | "objc", 2461 | ] 2462 | 2463 | [[package]] 2464 | name = "object" 2465 | version = "0.32.2" 2466 | source = "registry+https://github.com/rust-lang/crates.io-index" 2467 | checksum = "a6a622008b6e321afc04970976f62ee297fdbaa6f95318ca343e3eebb9648441" 2468 | dependencies = [ 2469 | "memchr", 2470 | ] 2471 | 2472 | [[package]] 2473 | name = "oboe" 2474 | version = "0.6.1" 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" 2476 | checksum = "e8b61bebd49e5d43f5f8cc7ee2891c16e0f41ec7954d36bcb6c14c5e0de867fb" 2477 | dependencies = [ 2478 | "jni", 2479 | "ndk", 2480 | "ndk-context", 2481 | "num-derive", 2482 | "num-traits", 2483 | "oboe-sys", 2484 | ] 2485 | 2486 | [[package]] 2487 | name = "oboe-sys" 2488 | version = "0.6.1" 2489 | source = "registry+https://github.com/rust-lang/crates.io-index" 2490 | checksum = "6c8bb09a4a2b1d668170cfe0a7d5bc103f8999fb316c98099b6a9939c9f2e79d" 2491 | dependencies = [ 2492 | "cc", 2493 | ] 2494 | 2495 | [[package]] 2496 | name = "ogg" 2497 | version = "0.8.0" 2498 | source = "registry+https://github.com/rust-lang/crates.io-index" 2499 | checksum = "6951b4e8bf21c8193da321bcce9c9dd2e13c858fe078bf9054a288b419ae5d6e" 2500 | dependencies = [ 2501 | "byteorder", 2502 | ] 2503 | 2504 | [[package]] 2505 | name = "once_cell" 2506 | version = "1.19.0" 2507 | source = "registry+https://github.com/rust-lang/crates.io-index" 2508 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 2509 | 2510 | [[package]] 2511 | name = "orbclient" 2512 | version = "0.3.47" 2513 | source = "registry+https://github.com/rust-lang/crates.io-index" 2514 | checksum = "52f0d54bde9774d3a51dcf281a5def240c71996bc6ca05d2c847ec8b2b216166" 2515 | dependencies = [ 2516 | "libredox", 2517 | ] 2518 | 2519 | [[package]] 2520 | name = "ordered-stream" 2521 | version = "0.2.0" 2522 | source = "registry+https://github.com/rust-lang/crates.io-index" 2523 | checksum = "9aa2b01e1d916879f73a53d01d1d6cee68adbb31d6d9177a8cfce093cced1d50" 2524 | dependencies = [ 2525 | "futures-core", 2526 | "pin-project-lite", 2527 | ] 2528 | 2529 | [[package]] 2530 | name = "ouroboros" 2531 | version = "0.18.3" 2532 | source = "registry+https://github.com/rust-lang/crates.io-index" 2533 | checksum = "97b7be5a8a3462b752f4be3ff2b2bf2f7f1d00834902e46be2a4d68b87b0573c" 2534 | dependencies = [ 2535 | "aliasable", 2536 | "ouroboros_macro", 2537 | "static_assertions", 2538 | ] 2539 | 2540 | [[package]] 2541 | name = "ouroboros_macro" 2542 | version = "0.18.3" 2543 | source = "registry+https://github.com/rust-lang/crates.io-index" 2544 | checksum = "b645dcde5f119c2c454a92d0dfa271a2a3b205da92e4292a68ead4bdbfde1f33" 2545 | dependencies = [ 2546 | "heck", 2547 | "itertools", 2548 | "proc-macro2", 2549 | "proc-macro2-diagnostics", 2550 | "quote", 2551 | "syn 2.0.63", 2552 | ] 2553 | 2554 | [[package]] 2555 | name = "owned_ttf_parser" 2556 | version = "0.21.0" 2557 | source = "registry+https://github.com/rust-lang/crates.io-index" 2558 | checksum = "6b41438d2fc63c46c74a2203bf5ccd82c41ba04347b2fcf5754f230b167067d5" 2559 | dependencies = [ 2560 | "ttf-parser 0.21.1", 2561 | ] 2562 | 2563 | [[package]] 2564 | name = "palette" 2565 | version = "0.7.6" 2566 | source = "registry+https://github.com/rust-lang/crates.io-index" 2567 | checksum = "4cbf71184cc5ecc2e4e1baccdb21026c20e5fc3dcf63028a086131b3ab00b6e6" 2568 | dependencies = [ 2569 | "approx", 2570 | "fast-srgb8", 2571 | "palette_derive", 2572 | "phf", 2573 | ] 2574 | 2575 | [[package]] 2576 | name = "palette_derive" 2577 | version = "0.7.6" 2578 | source = "registry+https://github.com/rust-lang/crates.io-index" 2579 | checksum = "f5030daf005bface118c096f510ffb781fc28f9ab6a32ab224d8631be6851d30" 2580 | dependencies = [ 2581 | "by_address", 2582 | "proc-macro2", 2583 | "quote", 2584 | "syn 2.0.63", 2585 | ] 2586 | 2587 | [[package]] 2588 | name = "parking" 2589 | version = "2.2.0" 2590 | source = "registry+https://github.com/rust-lang/crates.io-index" 2591 | checksum = "bb813b8af86854136c6922af0598d719255ecb2179515e6e7730d468f05c9cae" 2592 | 2593 | [[package]] 2594 | name = "parking_lot" 2595 | version = "0.11.2" 2596 | source = "registry+https://github.com/rust-lang/crates.io-index" 2597 | checksum = "7d17b78036a60663b797adeaee46f5c9dfebb86948d1255007a1d6be0271ff99" 2598 | dependencies = [ 2599 | "instant", 2600 | "lock_api", 2601 | "parking_lot_core 0.8.6", 2602 | ] 2603 | 2604 | [[package]] 2605 | name = "parking_lot" 2606 | version = "0.12.2" 2607 | source = "registry+https://github.com/rust-lang/crates.io-index" 2608 | checksum = "7e4af0ca4f6caed20e900d564c242b8e5d4903fdacf31d3daf527b66fe6f42fb" 2609 | dependencies = [ 2610 | "lock_api", 2611 | "parking_lot_core 0.9.10", 2612 | ] 2613 | 2614 | [[package]] 2615 | name = "parking_lot_core" 2616 | version = "0.8.6" 2617 | source = "registry+https://github.com/rust-lang/crates.io-index" 2618 | checksum = "60a2cfe6f0ad2bfc16aefa463b497d5c7a5ecd44a23efa72aa342d90177356dc" 2619 | dependencies = [ 2620 | "cfg-if", 2621 | "instant", 2622 | "libc", 2623 | "redox_syscall 0.2.16", 2624 | "smallvec", 2625 | "winapi", 2626 | ] 2627 | 2628 | [[package]] 2629 | name = "parking_lot_core" 2630 | version = "0.9.10" 2631 | source = "registry+https://github.com/rust-lang/crates.io-index" 2632 | checksum = "1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8" 2633 | dependencies = [ 2634 | "cfg-if", 2635 | "libc", 2636 | "redox_syscall 0.5.1", 2637 | "smallvec", 2638 | "windows-targets 0.52.5", 2639 | ] 2640 | 2641 | [[package]] 2642 | name = "paste" 2643 | version = "1.0.15" 2644 | source = "registry+https://github.com/rust-lang/crates.io-index" 2645 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2646 | 2647 | [[package]] 2648 | name = "percent-encoding" 2649 | version = "2.3.1" 2650 | source = "registry+https://github.com/rust-lang/crates.io-index" 2651 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 2652 | 2653 | [[package]] 2654 | name = "phf" 2655 | version = "0.11.2" 2656 | source = "registry+https://github.com/rust-lang/crates.io-index" 2657 | checksum = "ade2d8b8f33c7333b51bcf0428d37e217e9f32192ae4772156f65063b8ce03dc" 2658 | dependencies = [ 2659 | "phf_macros", 2660 | "phf_shared", 2661 | ] 2662 | 2663 | [[package]] 2664 | name = "phf_generator" 2665 | version = "0.11.2" 2666 | source = "registry+https://github.com/rust-lang/crates.io-index" 2667 | checksum = "48e4cc64c2ad9ebe670cb8fd69dd50ae301650392e81c05f9bfcb2d5bdbc24b0" 2668 | dependencies = [ 2669 | "phf_shared", 2670 | "rand", 2671 | ] 2672 | 2673 | [[package]] 2674 | name = "phf_macros" 2675 | version = "0.11.2" 2676 | source = "registry+https://github.com/rust-lang/crates.io-index" 2677 | checksum = "3444646e286606587e49f3bcf1679b8cef1dc2c5ecc29ddacaffc305180d464b" 2678 | dependencies = [ 2679 | "phf_generator", 2680 | "phf_shared", 2681 | "proc-macro2", 2682 | "quote", 2683 | "syn 2.0.63", 2684 | ] 2685 | 2686 | [[package]] 2687 | name = "phf_shared" 2688 | version = "0.11.2" 2689 | source = "registry+https://github.com/rust-lang/crates.io-index" 2690 | checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" 2691 | dependencies = [ 2692 | "siphasher", 2693 | ] 2694 | 2695 | [[package]] 2696 | name = "pin-project-lite" 2697 | version = "0.2.14" 2698 | source = "registry+https://github.com/rust-lang/crates.io-index" 2699 | checksum = "bda66fc9667c18cb2758a2ac84d1167245054bcf85d5d1aaa6923f45801bdd02" 2700 | 2701 | [[package]] 2702 | name = "pin-utils" 2703 | version = "0.1.0" 2704 | source = "registry+https://github.com/rust-lang/crates.io-index" 2705 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2706 | 2707 | [[package]] 2708 | name = "piper" 2709 | version = "0.2.1" 2710 | source = "registry+https://github.com/rust-lang/crates.io-index" 2711 | checksum = "668d31b1c4eba19242f2088b2bf3316b82ca31082a8335764db4e083db7485d4" 2712 | dependencies = [ 2713 | "atomic-waker", 2714 | "fastrand", 2715 | "futures-io", 2716 | ] 2717 | 2718 | [[package]] 2719 | name = "pkg-config" 2720 | version = "0.3.30" 2721 | source = "registry+https://github.com/rust-lang/crates.io-index" 2722 | checksum = "d231b230927b5e4ad203db57bbcbee2802f6bce620b1e4a9024a07d94e2907ec" 2723 | 2724 | [[package]] 2725 | name = "png" 2726 | version = "0.17.13" 2727 | source = "registry+https://github.com/rust-lang/crates.io-index" 2728 | checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" 2729 | dependencies = [ 2730 | "bitflags 1.3.2", 2731 | "crc32fast", 2732 | "fdeflate", 2733 | "flate2", 2734 | "miniz_oxide", 2735 | ] 2736 | 2737 | [[package]] 2738 | name = "polling" 2739 | version = "3.7.0" 2740 | source = "registry+https://github.com/rust-lang/crates.io-index" 2741 | checksum = "645493cf344456ef24219d02a768cf1fb92ddf8c92161679ae3d91b91a637be3" 2742 | dependencies = [ 2743 | "cfg-if", 2744 | "concurrent-queue", 2745 | "hermit-abi", 2746 | "pin-project-lite", 2747 | "rustix", 2748 | "tracing", 2749 | "windows-sys 0.52.0", 2750 | ] 2751 | 2752 | [[package]] 2753 | name = "pollster" 2754 | version = "0.3.0" 2755 | source = "registry+https://github.com/rust-lang/crates.io-index" 2756 | checksum = "22686f4785f02a4fcc856d3b3bb19bf6c8160d103f7a99cc258bddd0251dc7f2" 2757 | 2758 | [[package]] 2759 | name = "powerfmt" 2760 | version = "0.2.0" 2761 | source = "registry+https://github.com/rust-lang/crates.io-index" 2762 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2763 | 2764 | [[package]] 2765 | name = "ppv-lite86" 2766 | version = "0.2.17" 2767 | source = "registry+https://github.com/rust-lang/crates.io-index" 2768 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 2769 | 2770 | [[package]] 2771 | name = "presser" 2772 | version = "0.3.1" 2773 | source = "registry+https://github.com/rust-lang/crates.io-index" 2774 | checksum = "e8cf8e6a8aa66ce33f63993ffc4ea4271eb5b0530a9002db8455ea6050c77bfa" 2775 | 2776 | [[package]] 2777 | name = "primal-check" 2778 | version = "0.3.3" 2779 | source = "registry+https://github.com/rust-lang/crates.io-index" 2780 | checksum = "9df7f93fd637f083201473dab4fee2db4c429d32e55e3299980ab3957ab916a0" 2781 | dependencies = [ 2782 | "num-integer", 2783 | ] 2784 | 2785 | [[package]] 2786 | name = "proc-macro-crate" 2787 | version = "3.1.0" 2788 | source = "registry+https://github.com/rust-lang/crates.io-index" 2789 | checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284" 2790 | dependencies = [ 2791 | "toml_edit 0.21.1", 2792 | ] 2793 | 2794 | [[package]] 2795 | name = "proc-macro2" 2796 | version = "1.0.82" 2797 | source = "registry+https://github.com/rust-lang/crates.io-index" 2798 | checksum = "8ad3d49ab951a01fbaafe34f2ec74122942fe18a3f9814c3268f1bb72042131b" 2799 | dependencies = [ 2800 | "unicode-ident", 2801 | ] 2802 | 2803 | [[package]] 2804 | name = "proc-macro2-diagnostics" 2805 | version = "0.10.1" 2806 | source = "registry+https://github.com/rust-lang/crates.io-index" 2807 | checksum = "af066a9c399a26e020ada66a034357a868728e72cd426f3adcd35f80d88d88c8" 2808 | dependencies = [ 2809 | "proc-macro2", 2810 | "quote", 2811 | "syn 2.0.63", 2812 | "version_check", 2813 | "yansi", 2814 | ] 2815 | 2816 | [[package]] 2817 | name = "profiling" 2818 | version = "1.0.15" 2819 | source = "registry+https://github.com/rust-lang/crates.io-index" 2820 | checksum = "43d84d1d7a6ac92673717f9f6d1518374ef257669c24ebc5ac25d5033828be58" 2821 | 2822 | [[package]] 2823 | name = "qoi" 2824 | version = "0.4.1" 2825 | source = "registry+https://github.com/rust-lang/crates.io-index" 2826 | checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" 2827 | dependencies = [ 2828 | "bytemuck", 2829 | ] 2830 | 2831 | [[package]] 2832 | name = "quick-xml" 2833 | version = "0.31.0" 2834 | source = "registry+https://github.com/rust-lang/crates.io-index" 2835 | checksum = "1004a344b30a54e2ee58d66a71b32d2db2feb0a31f9a2d302bf0536f15de2a33" 2836 | dependencies = [ 2837 | "memchr", 2838 | ] 2839 | 2840 | [[package]] 2841 | name = "quote" 2842 | version = "1.0.36" 2843 | source = "registry+https://github.com/rust-lang/crates.io-index" 2844 | checksum = "0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7" 2845 | dependencies = [ 2846 | "proc-macro2", 2847 | ] 2848 | 2849 | [[package]] 2850 | name = "rand" 2851 | version = "0.8.5" 2852 | source = "registry+https://github.com/rust-lang/crates.io-index" 2853 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 2854 | dependencies = [ 2855 | "libc", 2856 | "rand_chacha", 2857 | "rand_core", 2858 | ] 2859 | 2860 | [[package]] 2861 | name = "rand_chacha" 2862 | version = "0.3.1" 2863 | source = "registry+https://github.com/rust-lang/crates.io-index" 2864 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 2865 | dependencies = [ 2866 | "ppv-lite86", 2867 | "rand_core", 2868 | ] 2869 | 2870 | [[package]] 2871 | name = "rand_core" 2872 | version = "0.6.4" 2873 | source = "registry+https://github.com/rust-lang/crates.io-index" 2874 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 2875 | dependencies = [ 2876 | "getrandom", 2877 | ] 2878 | 2879 | [[package]] 2880 | name = "range-alloc" 2881 | version = "0.1.3" 2882 | source = "registry+https://github.com/rust-lang/crates.io-index" 2883 | checksum = "9c8a99fddc9f0ba0a85884b8d14e3592853e787d581ca1816c91349b10e4eeab" 2884 | 2885 | [[package]] 2886 | name = "rangemap" 2887 | version = "1.5.1" 2888 | source = "registry+https://github.com/rust-lang/crates.io-index" 2889 | checksum = "f60fcc7d6849342eff22c4350c8b9a989ee8ceabc4b481253e8946b9fe83d684" 2890 | 2891 | [[package]] 2892 | name = "raw-window-handle" 2893 | version = "0.6.1" 2894 | source = "registry+https://github.com/rust-lang/crates.io-index" 2895 | checksum = "8cc3bcbdb1ddfc11e700e62968e6b4cc9c75bb466464ad28fb61c5b2c964418b" 2896 | 2897 | [[package]] 2898 | name = "rayon" 2899 | version = "1.10.0" 2900 | source = "registry+https://github.com/rust-lang/crates.io-index" 2901 | checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 2902 | dependencies = [ 2903 | "either", 2904 | "rayon-core", 2905 | ] 2906 | 2907 | [[package]] 2908 | name = "rayon-core" 2909 | version = "1.12.1" 2910 | source = "registry+https://github.com/rust-lang/crates.io-index" 2911 | checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 2912 | dependencies = [ 2913 | "crossbeam-deque", 2914 | "crossbeam-utils", 2915 | ] 2916 | 2917 | [[package]] 2918 | name = "read-fonts" 2919 | version = "0.19.1" 2920 | source = "registry+https://github.com/rust-lang/crates.io-index" 2921 | checksum = "af4749db2bd1c853db31a7ae5ee2fc6c30bbddce353ea8fedf673fed187c68c7" 2922 | dependencies = [ 2923 | "bytemuck", 2924 | "font-types", 2925 | ] 2926 | 2927 | [[package]] 2928 | name = "redox_syscall" 2929 | version = "0.2.16" 2930 | source = "registry+https://github.com/rust-lang/crates.io-index" 2931 | checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" 2932 | dependencies = [ 2933 | "bitflags 1.3.2", 2934 | ] 2935 | 2936 | [[package]] 2937 | name = "redox_syscall" 2938 | version = "0.3.5" 2939 | source = "registry+https://github.com/rust-lang/crates.io-index" 2940 | checksum = "567664f262709473930a4bf9e51bf2ebf3348f2e748ccc50dea20646858f8f29" 2941 | dependencies = [ 2942 | "bitflags 1.3.2", 2943 | ] 2944 | 2945 | [[package]] 2946 | name = "redox_syscall" 2947 | version = "0.4.1" 2948 | source = "registry+https://github.com/rust-lang/crates.io-index" 2949 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 2950 | dependencies = [ 2951 | "bitflags 1.3.2", 2952 | ] 2953 | 2954 | [[package]] 2955 | name = "redox_syscall" 2956 | version = "0.5.1" 2957 | source = "registry+https://github.com/rust-lang/crates.io-index" 2958 | checksum = "469052894dcb553421e483e4209ee581a45100d31b4018de03e5a7ad86374a7e" 2959 | dependencies = [ 2960 | "bitflags 2.5.0", 2961 | ] 2962 | 2963 | [[package]] 2964 | name = "regex" 2965 | version = "1.10.4" 2966 | source = "registry+https://github.com/rust-lang/crates.io-index" 2967 | checksum = "c117dbdfde9c8308975b6a18d71f3f385c89461f7b3fb054288ecf2a2058ba4c" 2968 | dependencies = [ 2969 | "aho-corasick", 2970 | "memchr", 2971 | "regex-automata", 2972 | "regex-syntax", 2973 | ] 2974 | 2975 | [[package]] 2976 | name = "regex-automata" 2977 | version = "0.4.6" 2978 | source = "registry+https://github.com/rust-lang/crates.io-index" 2979 | checksum = "86b83b8b9847f9bf95ef68afb0b8e6cdb80f498442f5179a29fad448fcc1eaea" 2980 | dependencies = [ 2981 | "aho-corasick", 2982 | "memchr", 2983 | "regex-syntax", 2984 | ] 2985 | 2986 | [[package]] 2987 | name = "regex-syntax" 2988 | version = "0.8.3" 2989 | source = "registry+https://github.com/rust-lang/crates.io-index" 2990 | checksum = "adad44e29e4c806119491a7f06f03de4d1af22c3a680dd47f1e6e179439d1f56" 2991 | 2992 | [[package]] 2993 | name = "renderdoc-sys" 2994 | version = "1.1.0" 2995 | source = "registry+https://github.com/rust-lang/crates.io-index" 2996 | checksum = "19b30a45b0cd0bcca8037f3d0dc3421eaf95327a17cad11964fb8179b4fc4832" 2997 | 2998 | [[package]] 2999 | name = "rfd" 3000 | version = "0.14.1" 3001 | source = "registry+https://github.com/rust-lang/crates.io-index" 3002 | checksum = "25a73a7337fc24366edfca76ec521f51877b114e42dab584008209cca6719251" 3003 | dependencies = [ 3004 | "ashpd", 3005 | "block", 3006 | "dispatch", 3007 | "js-sys", 3008 | "log", 3009 | "objc", 3010 | "objc-foundation", 3011 | "objc_id", 3012 | "pollster", 3013 | "raw-window-handle", 3014 | "urlencoding", 3015 | "wasm-bindgen", 3016 | "wasm-bindgen-futures", 3017 | "web-sys", 3018 | "windows-sys 0.48.0", 3019 | ] 3020 | 3021 | [[package]] 3022 | name = "rodio" 3023 | version = "0.18.0" 3024 | source = "git+https://github.com/RustAudio/rodio.git#11221a860903703a20fea9030a2335cf05cd738a" 3025 | dependencies = [ 3026 | "claxon", 3027 | "cpal", 3028 | "hound", 3029 | "lewton", 3030 | "symphonia", 3031 | "thiserror", 3032 | ] 3033 | 3034 | [[package]] 3035 | name = "roxmltree" 3036 | version = "0.19.0" 3037 | source = "registry+https://github.com/rust-lang/crates.io-index" 3038 | checksum = "3cd14fd5e3b777a7422cca79358c57a8f6e3a703d9ac187448d0daf220c2407f" 3039 | 3040 | [[package]] 3041 | name = "rustc-demangle" 3042 | version = "0.1.24" 3043 | source = "registry+https://github.com/rust-lang/crates.io-index" 3044 | checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" 3045 | 3046 | [[package]] 3047 | name = "rustc-hash" 3048 | version = "1.1.0" 3049 | source = "registry+https://github.com/rust-lang/crates.io-index" 3050 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 3051 | 3052 | [[package]] 3053 | name = "rustfft" 3054 | version = "6.2.0" 3055 | source = "registry+https://github.com/rust-lang/crates.io-index" 3056 | checksum = "43806561bc506d0c5d160643ad742e3161049ac01027b5e6d7524091fd401d86" 3057 | dependencies = [ 3058 | "num-complex", 3059 | "num-integer", 3060 | "num-traits", 3061 | "primal-check", 3062 | "strength_reduce", 3063 | "transpose", 3064 | "version_check", 3065 | ] 3066 | 3067 | [[package]] 3068 | name = "rustix" 3069 | version = "0.38.34" 3070 | source = "registry+https://github.com/rust-lang/crates.io-index" 3071 | checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" 3072 | dependencies = [ 3073 | "bitflags 2.5.0", 3074 | "errno", 3075 | "libc", 3076 | "linux-raw-sys 0.4.13", 3077 | "windows-sys 0.52.0", 3078 | ] 3079 | 3080 | [[package]] 3081 | name = "rustybuzz" 3082 | version = "0.11.0" 3083 | source = "registry+https://github.com/rust-lang/crates.io-index" 3084 | checksum = "2ee8fe2a8461a0854a37101fe7a1b13998d0cfa987e43248e81d2a5f4570f6fa" 3085 | dependencies = [ 3086 | "bitflags 1.3.2", 3087 | "bytemuck", 3088 | "libm", 3089 | "smallvec", 3090 | "ttf-parser 0.20.0", 3091 | "unicode-bidi-mirroring", 3092 | "unicode-ccc", 3093 | "unicode-properties", 3094 | "unicode-script", 3095 | ] 3096 | 3097 | [[package]] 3098 | name = "same-file" 3099 | version = "1.0.6" 3100 | source = "registry+https://github.com/rust-lang/crates.io-index" 3101 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 3102 | dependencies = [ 3103 | "winapi-util", 3104 | ] 3105 | 3106 | [[package]] 3107 | name = "scoped-tls" 3108 | version = "1.0.1" 3109 | source = "registry+https://github.com/rust-lang/crates.io-index" 3110 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 3111 | 3112 | [[package]] 3113 | name = "scopeguard" 3114 | version = "1.2.0" 3115 | source = "registry+https://github.com/rust-lang/crates.io-index" 3116 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 3117 | 3118 | [[package]] 3119 | name = "sctk-adwaita" 3120 | version = "0.8.1" 3121 | source = "registry+https://github.com/rust-lang/crates.io-index" 3122 | checksum = "82b2eaf3a5b264a521b988b2e73042e742df700c4f962cde845d1541adb46550" 3123 | dependencies = [ 3124 | "ab_glyph", 3125 | "log", 3126 | "memmap2 0.9.4", 3127 | "smithay-client-toolkit", 3128 | "tiny-skia", 3129 | ] 3130 | 3131 | [[package]] 3132 | name = "self_cell" 3133 | version = "1.0.4" 3134 | source = "registry+https://github.com/rust-lang/crates.io-index" 3135 | checksum = "d369a96f978623eb3dc28807c4852d6cc617fed53da5d3c400feff1ef34a714a" 3136 | 3137 | [[package]] 3138 | name = "serde" 3139 | version = "1.0.201" 3140 | source = "registry+https://github.com/rust-lang/crates.io-index" 3141 | checksum = "780f1cebed1629e4753a1a38a3c72d30b97ec044f0aef68cb26650a3c5cf363c" 3142 | dependencies = [ 3143 | "serde_derive", 3144 | ] 3145 | 3146 | [[package]] 3147 | name = "serde_derive" 3148 | version = "1.0.201" 3149 | source = "registry+https://github.com/rust-lang/crates.io-index" 3150 | checksum = "c5e405930b9796f1c00bee880d03fc7e0bb4b9a11afc776885ffe84320da2865" 3151 | dependencies = [ 3152 | "proc-macro2", 3153 | "quote", 3154 | "syn 2.0.63", 3155 | ] 3156 | 3157 | [[package]] 3158 | name = "serde_repr" 3159 | version = "0.1.19" 3160 | source = "registry+https://github.com/rust-lang/crates.io-index" 3161 | checksum = "6c64451ba24fc7a6a2d60fc75dd9c83c90903b19028d4eff35e88fc1e86564e9" 3162 | dependencies = [ 3163 | "proc-macro2", 3164 | "quote", 3165 | "syn 2.0.63", 3166 | ] 3167 | 3168 | [[package]] 3169 | name = "serde_spanned" 3170 | version = "0.6.5" 3171 | source = "registry+https://github.com/rust-lang/crates.io-index" 3172 | checksum = "eb3622f419d1296904700073ea6cc23ad690adbd66f13ea683df73298736f0c1" 3173 | dependencies = [ 3174 | "serde", 3175 | ] 3176 | 3177 | [[package]] 3178 | name = "sha1" 3179 | version = "0.10.6" 3180 | source = "registry+https://github.com/rust-lang/crates.io-index" 3181 | checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" 3182 | dependencies = [ 3183 | "cfg-if", 3184 | "cpufeatures", 3185 | "digest", 3186 | ] 3187 | 3188 | [[package]] 3189 | name = "shlex" 3190 | version = "1.3.0" 3191 | source = "registry+https://github.com/rust-lang/crates.io-index" 3192 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 3193 | 3194 | [[package]] 3195 | name = "signal-hook-registry" 3196 | version = "1.4.2" 3197 | source = "registry+https://github.com/rust-lang/crates.io-index" 3198 | checksum = "a9e9e0b4211b72e7b8b6e85c807d36c212bdb33ea8587f7569562a84df5465b1" 3199 | dependencies = [ 3200 | "libc", 3201 | ] 3202 | 3203 | [[package]] 3204 | name = "simd-adler32" 3205 | version = "0.3.7" 3206 | source = "registry+https://github.com/rust-lang/crates.io-index" 3207 | checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" 3208 | 3209 | [[package]] 3210 | name = "siphasher" 3211 | version = "0.3.11" 3212 | source = "registry+https://github.com/rust-lang/crates.io-index" 3213 | checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" 3214 | 3215 | [[package]] 3216 | name = "slab" 3217 | version = "0.4.9" 3218 | source = "registry+https://github.com/rust-lang/crates.io-index" 3219 | checksum = "8f92a496fb766b417c996b9c5e57daf2f7ad3b0bebe1ccfca4856390e3d3bb67" 3220 | dependencies = [ 3221 | "autocfg", 3222 | ] 3223 | 3224 | [[package]] 3225 | name = "slotmap" 3226 | version = "1.0.7" 3227 | source = "registry+https://github.com/rust-lang/crates.io-index" 3228 | checksum = "dbff4acf519f630b3a3ddcfaea6c06b42174d9a44bc70c620e9ed1649d58b82a" 3229 | dependencies = [ 3230 | "version_check", 3231 | ] 3232 | 3233 | [[package]] 3234 | name = "smallvec" 3235 | version = "1.13.2" 3236 | source = "registry+https://github.com/rust-lang/crates.io-index" 3237 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 3238 | 3239 | [[package]] 3240 | name = "smithay-client-toolkit" 3241 | version = "0.18.1" 3242 | source = "registry+https://github.com/rust-lang/crates.io-index" 3243 | checksum = "922fd3eeab3bd820d76537ce8f582b1cf951eceb5475c28500c7457d9d17f53a" 3244 | dependencies = [ 3245 | "bitflags 2.5.0", 3246 | "calloop", 3247 | "calloop-wayland-source", 3248 | "cursor-icon", 3249 | "libc", 3250 | "log", 3251 | "memmap2 0.9.4", 3252 | "rustix", 3253 | "thiserror", 3254 | "wayland-backend", 3255 | "wayland-client", 3256 | "wayland-csd-frame", 3257 | "wayland-cursor", 3258 | "wayland-protocols", 3259 | "wayland-protocols-wlr", 3260 | "wayland-scanner", 3261 | "xkeysym", 3262 | ] 3263 | 3264 | [[package]] 3265 | name = "smithay-clipboard" 3266 | version = "0.7.1" 3267 | source = "registry+https://github.com/rust-lang/crates.io-index" 3268 | checksum = "c091e7354ea8059d6ad99eace06dd13ddeedbb0ac72d40a9a6e7ff790525882d" 3269 | dependencies = [ 3270 | "libc", 3271 | "smithay-client-toolkit", 3272 | "wayland-backend", 3273 | ] 3274 | 3275 | [[package]] 3276 | name = "smol_str" 3277 | version = "0.2.1" 3278 | source = "registry+https://github.com/rust-lang/crates.io-index" 3279 | checksum = "e6845563ada680337a52d43bb0b29f396f2d911616f6573012645b9e3d048a49" 3280 | dependencies = [ 3281 | "serde", 3282 | ] 3283 | 3284 | [[package]] 3285 | name = "softbuffer" 3286 | version = "0.4.2" 3287 | source = "registry+https://github.com/rust-lang/crates.io-index" 3288 | checksum = "61d5d17f23326fe0d9b0af282f73f3af666699420fd5f42629efd9c6e7dc166f" 3289 | dependencies = [ 3290 | "as-raw-xcb-connection", 3291 | "bytemuck", 3292 | "cfg_aliases 0.2.1", 3293 | "cocoa", 3294 | "core-graphics", 3295 | "drm", 3296 | "fastrand", 3297 | "foreign-types", 3298 | "js-sys", 3299 | "log", 3300 | "memmap2 0.9.4", 3301 | "objc", 3302 | "raw-window-handle", 3303 | "redox_syscall 0.5.1", 3304 | "rustix", 3305 | "tiny-xlib", 3306 | "wasm-bindgen", 3307 | "wayland-backend", 3308 | "wayland-client", 3309 | "wayland-sys", 3310 | "web-sys", 3311 | "windows-sys 0.52.0", 3312 | "x11rb", 3313 | ] 3314 | 3315 | [[package]] 3316 | name = "spin" 3317 | version = "0.9.8" 3318 | source = "registry+https://github.com/rust-lang/crates.io-index" 3319 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 3320 | dependencies = [ 3321 | "lock_api", 3322 | ] 3323 | 3324 | [[package]] 3325 | name = "spirv" 3326 | version = "0.3.0+sdk-1.3.268.0" 3327 | source = "registry+https://github.com/rust-lang/crates.io-index" 3328 | checksum = "eda41003dc44290527a59b13432d4a0379379fa074b70174882adfbdfd917844" 3329 | dependencies = [ 3330 | "bitflags 2.5.0", 3331 | ] 3332 | 3333 | [[package]] 3334 | name = "static_assertions" 3335 | version = "1.1.0" 3336 | source = "registry+https://github.com/rust-lang/crates.io-index" 3337 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 3338 | 3339 | [[package]] 3340 | name = "strength_reduce" 3341 | version = "0.2.4" 3342 | source = "registry+https://github.com/rust-lang/crates.io-index" 3343 | checksum = "fe895eb47f22e2ddd4dabc02bce419d2e643c8e3b585c78158b349195bc24d82" 3344 | 3345 | [[package]] 3346 | name = "strict-num" 3347 | version = "0.1.1" 3348 | source = "registry+https://github.com/rust-lang/crates.io-index" 3349 | checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" 3350 | 3351 | [[package]] 3352 | name = "svg_fmt" 3353 | version = "0.4.2" 3354 | source = "registry+https://github.com/rust-lang/crates.io-index" 3355 | checksum = "f83ba502a3265efb76efb89b0a2f7782ad6f2675015d4ce37e4b547dda42b499" 3356 | 3357 | [[package]] 3358 | name = "swash" 3359 | version = "0.1.15" 3360 | source = "registry+https://github.com/rust-lang/crates.io-index" 3361 | checksum = "06ec889a8e0a6fcb91041996c8f1f6be0fe1a09e94478785e07c32ce2bca2d2b" 3362 | dependencies = [ 3363 | "read-fonts", 3364 | "yazi", 3365 | "zeno", 3366 | ] 3367 | 3368 | [[package]] 3369 | name = "symphonia" 3370 | version = "0.5.4" 3371 | source = "registry+https://github.com/rust-lang/crates.io-index" 3372 | checksum = "815c942ae7ee74737bb00f965fa5b5a2ac2ce7b6c01c0cc169bbeaf7abd5f5a9" 3373 | dependencies = [ 3374 | "lazy_static", 3375 | "symphonia-bundle-mp3", 3376 | "symphonia-core", 3377 | "symphonia-metadata", 3378 | ] 3379 | 3380 | [[package]] 3381 | name = "symphonia-bundle-mp3" 3382 | version = "0.5.4" 3383 | source = "registry+https://github.com/rust-lang/crates.io-index" 3384 | checksum = "c01c2aae70f0f1fb096b6f0ff112a930b1fb3626178fba3ae68b09dce71706d4" 3385 | dependencies = [ 3386 | "lazy_static", 3387 | "log", 3388 | "symphonia-core", 3389 | "symphonia-metadata", 3390 | ] 3391 | 3392 | [[package]] 3393 | name = "symphonia-core" 3394 | version = "0.5.4" 3395 | source = "registry+https://github.com/rust-lang/crates.io-index" 3396 | checksum = "798306779e3dc7d5231bd5691f5a813496dc79d3f56bf82e25789f2094e022c3" 3397 | dependencies = [ 3398 | "arrayvec", 3399 | "bitflags 1.3.2", 3400 | "bytemuck", 3401 | "lazy_static", 3402 | "log", 3403 | ] 3404 | 3405 | [[package]] 3406 | name = "symphonia-metadata" 3407 | version = "0.5.4" 3408 | source = "registry+https://github.com/rust-lang/crates.io-index" 3409 | checksum = "bc622b9841a10089c5b18e99eb904f4341615d5aa55bbf4eedde1be721a4023c" 3410 | dependencies = [ 3411 | "encoding_rs", 3412 | "lazy_static", 3413 | "log", 3414 | "symphonia-core", 3415 | ] 3416 | 3417 | [[package]] 3418 | name = "syn" 3419 | version = "1.0.109" 3420 | source = "registry+https://github.com/rust-lang/crates.io-index" 3421 | checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" 3422 | dependencies = [ 3423 | "proc-macro2", 3424 | "quote", 3425 | "unicode-ident", 3426 | ] 3427 | 3428 | [[package]] 3429 | name = "syn" 3430 | version = "2.0.63" 3431 | source = "registry+https://github.com/rust-lang/crates.io-index" 3432 | checksum = "bf5be731623ca1a1fb7d8be6f261a3be6d3e2337b8a1f97be944d020c8fcb704" 3433 | dependencies = [ 3434 | "proc-macro2", 3435 | "quote", 3436 | "unicode-ident", 3437 | ] 3438 | 3439 | [[package]] 3440 | name = "sys-locale" 3441 | version = "0.3.1" 3442 | source = "registry+https://github.com/rust-lang/crates.io-index" 3443 | checksum = "e801cf239ecd6ccd71f03d270d67dd53d13e90aab208bf4b8fe4ad957ea949b0" 3444 | dependencies = [ 3445 | "libc", 3446 | ] 3447 | 3448 | [[package]] 3449 | name = "tempfile" 3450 | version = "3.10.1" 3451 | source = "registry+https://github.com/rust-lang/crates.io-index" 3452 | checksum = "85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1" 3453 | dependencies = [ 3454 | "cfg-if", 3455 | "fastrand", 3456 | "rustix", 3457 | "windows-sys 0.52.0", 3458 | ] 3459 | 3460 | [[package]] 3461 | name = "termcolor" 3462 | version = "1.4.1" 3463 | source = "registry+https://github.com/rust-lang/crates.io-index" 3464 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 3465 | dependencies = [ 3466 | "winapi-util", 3467 | ] 3468 | 3469 | [[package]] 3470 | name = "thiserror" 3471 | version = "1.0.60" 3472 | source = "registry+https://github.com/rust-lang/crates.io-index" 3473 | checksum = "579e9083ca58dd9dcf91a9923bb9054071b9ebbd800b342194c9feb0ee89fc18" 3474 | dependencies = [ 3475 | "thiserror-impl", 3476 | ] 3477 | 3478 | [[package]] 3479 | name = "thiserror-impl" 3480 | version = "1.0.60" 3481 | source = "registry+https://github.com/rust-lang/crates.io-index" 3482 | checksum = "e2470041c06ec3ac1ab38d0356a6119054dedaea53e12fbefc0de730a1c08524" 3483 | dependencies = [ 3484 | "proc-macro2", 3485 | "quote", 3486 | "syn 2.0.63", 3487 | ] 3488 | 3489 | [[package]] 3490 | name = "tiff" 3491 | version = "0.9.1" 3492 | source = "registry+https://github.com/rust-lang/crates.io-index" 3493 | checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" 3494 | dependencies = [ 3495 | "flate2", 3496 | "jpeg-decoder", 3497 | "weezl", 3498 | ] 3499 | 3500 | [[package]] 3501 | name = "time" 3502 | version = "0.3.36" 3503 | source = "registry+https://github.com/rust-lang/crates.io-index" 3504 | checksum = "5dfd88e563464686c916c7e46e623e520ddc6d79fa6641390f2e3fa86e83e885" 3505 | dependencies = [ 3506 | "deranged", 3507 | "libc", 3508 | "num-conv", 3509 | "num_threads", 3510 | "powerfmt", 3511 | "serde", 3512 | "time-core", 3513 | ] 3514 | 3515 | [[package]] 3516 | name = "time-core" 3517 | version = "0.1.2" 3518 | source = "registry+https://github.com/rust-lang/crates.io-index" 3519 | checksum = "ef927ca75afb808a4d64dd374f00a2adf8d0fcff8e7b184af886c3c87ec4a3f3" 3520 | 3521 | [[package]] 3522 | name = "tiny-skia" 3523 | version = "0.11.4" 3524 | source = "registry+https://github.com/rust-lang/crates.io-index" 3525 | checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" 3526 | dependencies = [ 3527 | "arrayref", 3528 | "arrayvec", 3529 | "bytemuck", 3530 | "cfg-if", 3531 | "log", 3532 | "png", 3533 | "tiny-skia-path", 3534 | ] 3535 | 3536 | [[package]] 3537 | name = "tiny-skia-path" 3538 | version = "0.11.4" 3539 | source = "registry+https://github.com/rust-lang/crates.io-index" 3540 | checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" 3541 | dependencies = [ 3542 | "arrayref", 3543 | "bytemuck", 3544 | "strict-num", 3545 | ] 3546 | 3547 | [[package]] 3548 | name = "tiny-xlib" 3549 | version = "0.2.2" 3550 | source = "registry+https://github.com/rust-lang/crates.io-index" 3551 | checksum = "d4098d49269baa034a8d1eae9bd63e9fa532148d772121dace3bcd6a6c98eb6d" 3552 | dependencies = [ 3553 | "as-raw-xcb-connection", 3554 | "ctor", 3555 | "libloading 0.8.3", 3556 | "tracing", 3557 | ] 3558 | 3559 | [[package]] 3560 | name = "tinyvec" 3561 | version = "1.6.0" 3562 | source = "registry+https://github.com/rust-lang/crates.io-index" 3563 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 3564 | dependencies = [ 3565 | "tinyvec_macros", 3566 | ] 3567 | 3568 | [[package]] 3569 | name = "tinyvec_macros" 3570 | version = "0.1.1" 3571 | source = "registry+https://github.com/rust-lang/crates.io-index" 3572 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 3573 | 3574 | [[package]] 3575 | name = "tokio" 3576 | version = "1.37.0" 3577 | source = "registry+https://github.com/rust-lang/crates.io-index" 3578 | checksum = "1adbebffeca75fcfd058afa480fb6c0b81e165a0323f9c9d39c9697e37c46787" 3579 | dependencies = [ 3580 | "backtrace", 3581 | "num_cpus", 3582 | "pin-project-lite", 3583 | ] 3584 | 3585 | [[package]] 3586 | name = "toml" 3587 | version = "0.8.12" 3588 | source = "registry+https://github.com/rust-lang/crates.io-index" 3589 | checksum = "e9dd1545e8208b4a5af1aa9bbd0b4cf7e9ea08fabc5d0a5c67fcaafa17433aa3" 3590 | dependencies = [ 3591 | "serde", 3592 | "serde_spanned", 3593 | "toml_datetime", 3594 | "toml_edit 0.22.12", 3595 | ] 3596 | 3597 | [[package]] 3598 | name = "toml_datetime" 3599 | version = "0.6.5" 3600 | source = "registry+https://github.com/rust-lang/crates.io-index" 3601 | checksum = "3550f4e9685620ac18a50ed434eb3aec30db8ba93b0287467bca5826ea25baf1" 3602 | dependencies = [ 3603 | "serde", 3604 | ] 3605 | 3606 | [[package]] 3607 | name = "toml_edit" 3608 | version = "0.21.1" 3609 | source = "registry+https://github.com/rust-lang/crates.io-index" 3610 | checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1" 3611 | dependencies = [ 3612 | "indexmap", 3613 | "toml_datetime", 3614 | "winnow 0.5.40", 3615 | ] 3616 | 3617 | [[package]] 3618 | name = "toml_edit" 3619 | version = "0.22.12" 3620 | source = "registry+https://github.com/rust-lang/crates.io-index" 3621 | checksum = "d3328d4f68a705b2a4498da1d580585d39a6510f98318a2cec3018a7ec61ddef" 3622 | dependencies = [ 3623 | "indexmap", 3624 | "serde", 3625 | "serde_spanned", 3626 | "toml_datetime", 3627 | "winnow 0.6.8", 3628 | ] 3629 | 3630 | [[package]] 3631 | name = "tracing" 3632 | version = "0.1.40" 3633 | source = "registry+https://github.com/rust-lang/crates.io-index" 3634 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 3635 | dependencies = [ 3636 | "pin-project-lite", 3637 | "tracing-attributes", 3638 | "tracing-core", 3639 | ] 3640 | 3641 | [[package]] 3642 | name = "tracing-attributes" 3643 | version = "0.1.27" 3644 | source = "registry+https://github.com/rust-lang/crates.io-index" 3645 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 3646 | dependencies = [ 3647 | "proc-macro2", 3648 | "quote", 3649 | "syn 2.0.63", 3650 | ] 3651 | 3652 | [[package]] 3653 | name = "tracing-core" 3654 | version = "0.1.32" 3655 | source = "registry+https://github.com/rust-lang/crates.io-index" 3656 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 3657 | dependencies = [ 3658 | "once_cell", 3659 | ] 3660 | 3661 | [[package]] 3662 | name = "transpose" 3663 | version = "0.2.3" 3664 | source = "registry+https://github.com/rust-lang/crates.io-index" 3665 | checksum = "1ad61aed86bc3faea4300c7aee358b4c6d0c8d6ccc36524c96e4c92ccf26e77e" 3666 | dependencies = [ 3667 | "num-integer", 3668 | "strength_reduce", 3669 | ] 3670 | 3671 | [[package]] 3672 | name = "ttf-parser" 3673 | version = "0.19.2" 3674 | source = "registry+https://github.com/rust-lang/crates.io-index" 3675 | checksum = "49d64318d8311fc2668e48b63969f4343e0a85c4a109aa8460d6672e364b8bd1" 3676 | 3677 | [[package]] 3678 | name = "ttf-parser" 3679 | version = "0.20.0" 3680 | source = "registry+https://github.com/rust-lang/crates.io-index" 3681 | checksum = "17f77d76d837a7830fe1d4f12b7b4ba4192c1888001c7164257e4bc6d21d96b4" 3682 | 3683 | [[package]] 3684 | name = "ttf-parser" 3685 | version = "0.21.1" 3686 | source = "registry+https://github.com/rust-lang/crates.io-index" 3687 | checksum = "2c591d83f69777866b9126b24c6dd9a18351f177e49d625920d19f989fd31cf8" 3688 | 3689 | [[package]] 3690 | name = "typenum" 3691 | version = "1.17.0" 3692 | source = "registry+https://github.com/rust-lang/crates.io-index" 3693 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 3694 | 3695 | [[package]] 3696 | name = "uds_windows" 3697 | version = "1.1.0" 3698 | source = "registry+https://github.com/rust-lang/crates.io-index" 3699 | checksum = "89daebc3e6fd160ac4aa9fc8b3bf71e1f74fbf92367ae71fb83a037e8bf164b9" 3700 | dependencies = [ 3701 | "memoffset", 3702 | "tempfile", 3703 | "winapi", 3704 | ] 3705 | 3706 | [[package]] 3707 | name = "unicode-bidi" 3708 | version = "0.3.15" 3709 | source = "registry+https://github.com/rust-lang/crates.io-index" 3710 | checksum = "08f95100a766bf4f8f28f90d77e0a5461bbdb219042e7679bebe79004fed8d75" 3711 | 3712 | [[package]] 3713 | name = "unicode-bidi-mirroring" 3714 | version = "0.1.0" 3715 | source = "registry+https://github.com/rust-lang/crates.io-index" 3716 | checksum = "56d12260fb92d52f9008be7e4bca09f584780eb2266dc8fecc6a192bec561694" 3717 | 3718 | [[package]] 3719 | name = "unicode-ccc" 3720 | version = "0.1.2" 3721 | source = "registry+https://github.com/rust-lang/crates.io-index" 3722 | checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" 3723 | 3724 | [[package]] 3725 | name = "unicode-ident" 3726 | version = "1.0.12" 3727 | source = "registry+https://github.com/rust-lang/crates.io-index" 3728 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 3729 | 3730 | [[package]] 3731 | name = "unicode-linebreak" 3732 | version = "0.1.5" 3733 | source = "registry+https://github.com/rust-lang/crates.io-index" 3734 | checksum = "3b09c83c3c29d37506a3e260c08c03743a6bb66a9cd432c6934ab501a190571f" 3735 | 3736 | [[package]] 3737 | name = "unicode-normalization" 3738 | version = "0.1.23" 3739 | source = "registry+https://github.com/rust-lang/crates.io-index" 3740 | checksum = "a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5" 3741 | dependencies = [ 3742 | "tinyvec", 3743 | ] 3744 | 3745 | [[package]] 3746 | name = "unicode-properties" 3747 | version = "0.1.1" 3748 | source = "registry+https://github.com/rust-lang/crates.io-index" 3749 | checksum = "e4259d9d4425d9f0661581b804cb85fe66a4c631cadd8f490d1c13a35d5d9291" 3750 | 3751 | [[package]] 3752 | name = "unicode-script" 3753 | version = "0.5.6" 3754 | source = "registry+https://github.com/rust-lang/crates.io-index" 3755 | checksum = "ad8d71f5726e5f285a935e9fe8edfd53f0491eb6e9a5774097fdabee7cd8c9cd" 3756 | 3757 | [[package]] 3758 | name = "unicode-segmentation" 3759 | version = "1.11.0" 3760 | source = "registry+https://github.com/rust-lang/crates.io-index" 3761 | checksum = "d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202" 3762 | 3763 | [[package]] 3764 | name = "unicode-width" 3765 | version = "0.1.12" 3766 | source = "registry+https://github.com/rust-lang/crates.io-index" 3767 | checksum = "68f5e5f3158ecfd4b8ff6fe086db7c8467a2dfdac97fe420f2b7c4aa97af66d6" 3768 | 3769 | [[package]] 3770 | name = "unicode-xid" 3771 | version = "0.2.4" 3772 | source = "registry+https://github.com/rust-lang/crates.io-index" 3773 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 3774 | 3775 | [[package]] 3776 | name = "url" 3777 | version = "2.5.0" 3778 | source = "registry+https://github.com/rust-lang/crates.io-index" 3779 | checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" 3780 | dependencies = [ 3781 | "form_urlencoded", 3782 | "idna", 3783 | "percent-encoding", 3784 | "serde", 3785 | ] 3786 | 3787 | [[package]] 3788 | name = "urlencoding" 3789 | version = "2.1.3" 3790 | source = "registry+https://github.com/rust-lang/crates.io-index" 3791 | checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" 3792 | 3793 | [[package]] 3794 | name = "version_check" 3795 | version = "0.9.4" 3796 | source = "registry+https://github.com/rust-lang/crates.io-index" 3797 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 3798 | 3799 | [[package]] 3800 | name = "walkdir" 3801 | version = "2.5.0" 3802 | source = "registry+https://github.com/rust-lang/crates.io-index" 3803 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3804 | dependencies = [ 3805 | "same-file", 3806 | "winapi-util", 3807 | ] 3808 | 3809 | [[package]] 3810 | name = "wasi" 3811 | version = "0.11.0+wasi-snapshot-preview1" 3812 | source = "registry+https://github.com/rust-lang/crates.io-index" 3813 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 3814 | 3815 | [[package]] 3816 | name = "wasm-bindgen" 3817 | version = "0.2.92" 3818 | source = "registry+https://github.com/rust-lang/crates.io-index" 3819 | checksum = "4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8" 3820 | dependencies = [ 3821 | "cfg-if", 3822 | "wasm-bindgen-macro", 3823 | ] 3824 | 3825 | [[package]] 3826 | name = "wasm-bindgen-backend" 3827 | version = "0.2.92" 3828 | source = "registry+https://github.com/rust-lang/crates.io-index" 3829 | checksum = "614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da" 3830 | dependencies = [ 3831 | "bumpalo", 3832 | "log", 3833 | "once_cell", 3834 | "proc-macro2", 3835 | "quote", 3836 | "syn 2.0.63", 3837 | "wasm-bindgen-shared", 3838 | ] 3839 | 3840 | [[package]] 3841 | name = "wasm-bindgen-futures" 3842 | version = "0.4.42" 3843 | source = "registry+https://github.com/rust-lang/crates.io-index" 3844 | checksum = "76bc14366121efc8dbb487ab05bcc9d346b3b5ec0eaa76e46594cabbe51762c0" 3845 | dependencies = [ 3846 | "cfg-if", 3847 | "js-sys", 3848 | "wasm-bindgen", 3849 | "web-sys", 3850 | ] 3851 | 3852 | [[package]] 3853 | name = "wasm-bindgen-macro" 3854 | version = "0.2.92" 3855 | source = "registry+https://github.com/rust-lang/crates.io-index" 3856 | checksum = "a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726" 3857 | dependencies = [ 3858 | "quote", 3859 | "wasm-bindgen-macro-support", 3860 | ] 3861 | 3862 | [[package]] 3863 | name = "wasm-bindgen-macro-support" 3864 | version = "0.2.92" 3865 | source = "registry+https://github.com/rust-lang/crates.io-index" 3866 | checksum = "e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7" 3867 | dependencies = [ 3868 | "proc-macro2", 3869 | "quote", 3870 | "syn 2.0.63", 3871 | "wasm-bindgen-backend", 3872 | "wasm-bindgen-shared", 3873 | ] 3874 | 3875 | [[package]] 3876 | name = "wasm-bindgen-shared" 3877 | version = "0.2.92" 3878 | source = "registry+https://github.com/rust-lang/crates.io-index" 3879 | checksum = "af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96" 3880 | 3881 | [[package]] 3882 | name = "wasm-timer" 3883 | version = "0.2.5" 3884 | source = "registry+https://github.com/rust-lang/crates.io-index" 3885 | checksum = "be0ecb0db480561e9a7642b5d3e4187c128914e58aa84330b9493e3eb68c5e7f" 3886 | dependencies = [ 3887 | "futures", 3888 | "js-sys", 3889 | "parking_lot 0.11.2", 3890 | "pin-utils", 3891 | "wasm-bindgen", 3892 | "wasm-bindgen-futures", 3893 | "web-sys", 3894 | ] 3895 | 3896 | [[package]] 3897 | name = "wayland-backend" 3898 | version = "0.3.3" 3899 | source = "registry+https://github.com/rust-lang/crates.io-index" 3900 | checksum = "9d50fa61ce90d76474c87f5fc002828d81b32677340112b4ef08079a9d459a40" 3901 | dependencies = [ 3902 | "cc", 3903 | "downcast-rs", 3904 | "rustix", 3905 | "scoped-tls", 3906 | "smallvec", 3907 | "wayland-sys", 3908 | ] 3909 | 3910 | [[package]] 3911 | name = "wayland-client" 3912 | version = "0.31.2" 3913 | source = "registry+https://github.com/rust-lang/crates.io-index" 3914 | checksum = "82fb96ee935c2cea6668ccb470fb7771f6215d1691746c2d896b447a00ad3f1f" 3915 | dependencies = [ 3916 | "bitflags 2.5.0", 3917 | "rustix", 3918 | "wayland-backend", 3919 | "wayland-scanner", 3920 | ] 3921 | 3922 | [[package]] 3923 | name = "wayland-csd-frame" 3924 | version = "0.3.0" 3925 | source = "registry+https://github.com/rust-lang/crates.io-index" 3926 | checksum = "625c5029dbd43d25e6aa9615e88b829a5cad13b2819c4ae129fdbb7c31ab4c7e" 3927 | dependencies = [ 3928 | "bitflags 2.5.0", 3929 | "cursor-icon", 3930 | "wayland-backend", 3931 | ] 3932 | 3933 | [[package]] 3934 | name = "wayland-cursor" 3935 | version = "0.31.1" 3936 | source = "registry+https://github.com/rust-lang/crates.io-index" 3937 | checksum = "71ce5fa868dd13d11a0d04c5e2e65726d0897be8de247c0c5a65886e283231ba" 3938 | dependencies = [ 3939 | "rustix", 3940 | "wayland-client", 3941 | "xcursor", 3942 | ] 3943 | 3944 | [[package]] 3945 | name = "wayland-protocols" 3946 | version = "0.31.2" 3947 | source = "registry+https://github.com/rust-lang/crates.io-index" 3948 | checksum = "8f81f365b8b4a97f422ac0e8737c438024b5951734506b0e1d775c73030561f4" 3949 | dependencies = [ 3950 | "bitflags 2.5.0", 3951 | "wayland-backend", 3952 | "wayland-client", 3953 | "wayland-scanner", 3954 | ] 3955 | 3956 | [[package]] 3957 | name = "wayland-protocols-plasma" 3958 | version = "0.2.0" 3959 | source = "registry+https://github.com/rust-lang/crates.io-index" 3960 | checksum = "23803551115ff9ea9bce586860c5c5a971e360825a0309264102a9495a5ff479" 3961 | dependencies = [ 3962 | "bitflags 2.5.0", 3963 | "wayland-backend", 3964 | "wayland-client", 3965 | "wayland-protocols", 3966 | "wayland-scanner", 3967 | ] 3968 | 3969 | [[package]] 3970 | name = "wayland-protocols-wlr" 3971 | version = "0.2.0" 3972 | source = "registry+https://github.com/rust-lang/crates.io-index" 3973 | checksum = "ad1f61b76b6c2d8742e10f9ba5c3737f6530b4c243132c2a2ccc8aa96fe25cd6" 3974 | dependencies = [ 3975 | "bitflags 2.5.0", 3976 | "wayland-backend", 3977 | "wayland-client", 3978 | "wayland-protocols", 3979 | "wayland-scanner", 3980 | ] 3981 | 3982 | [[package]] 3983 | name = "wayland-scanner" 3984 | version = "0.31.1" 3985 | source = "registry+https://github.com/rust-lang/crates.io-index" 3986 | checksum = "63b3a62929287001986fb58c789dce9b67604a397c15c611ad9f747300b6c283" 3987 | dependencies = [ 3988 | "proc-macro2", 3989 | "quick-xml", 3990 | "quote", 3991 | ] 3992 | 3993 | [[package]] 3994 | name = "wayland-sys" 3995 | version = "0.31.1" 3996 | source = "registry+https://github.com/rust-lang/crates.io-index" 3997 | checksum = "15a0c8eaff5216d07f226cb7a549159267f3467b289d9a2e52fd3ef5aae2b7af" 3998 | dependencies = [ 3999 | "dlib", 4000 | "log", 4001 | "once_cell", 4002 | "pkg-config", 4003 | ] 4004 | 4005 | [[package]] 4006 | name = "web-sys" 4007 | version = "0.3.67" 4008 | source = "registry+https://github.com/rust-lang/crates.io-index" 4009 | checksum = "58cd2333b6e0be7a39605f0e255892fd7418a682d8da8fe042fe25128794d2ed" 4010 | dependencies = [ 4011 | "js-sys", 4012 | "wasm-bindgen", 4013 | ] 4014 | 4015 | [[package]] 4016 | name = "web-time" 4017 | version = "0.2.4" 4018 | source = "registry+https://github.com/rust-lang/crates.io-index" 4019 | checksum = "aa30049b1c872b72c89866d458eae9f20380ab280ffd1b1e18df2d3e2d98cfe0" 4020 | dependencies = [ 4021 | "js-sys", 4022 | "wasm-bindgen", 4023 | ] 4024 | 4025 | [[package]] 4026 | name = "weezl" 4027 | version = "0.1.8" 4028 | source = "registry+https://github.com/rust-lang/crates.io-index" 4029 | checksum = "53a85b86a771b1c87058196170769dd264f66c0782acf1ae6cc51bfd64b39082" 4030 | 4031 | [[package]] 4032 | name = "wgpu" 4033 | version = "0.19.4" 4034 | source = "registry+https://github.com/rust-lang/crates.io-index" 4035 | checksum = "cbd7311dbd2abcfebaabf1841a2824ed7c8be443a0f29166e5d3c6a53a762c01" 4036 | dependencies = [ 4037 | "arrayvec", 4038 | "cfg-if", 4039 | "cfg_aliases 0.1.1", 4040 | "js-sys", 4041 | "log", 4042 | "naga", 4043 | "parking_lot 0.12.2", 4044 | "profiling", 4045 | "raw-window-handle", 4046 | "smallvec", 4047 | "static_assertions", 4048 | "wasm-bindgen", 4049 | "wasm-bindgen-futures", 4050 | "web-sys", 4051 | "wgpu-core", 4052 | "wgpu-hal", 4053 | "wgpu-types", 4054 | ] 4055 | 4056 | [[package]] 4057 | name = "wgpu-core" 4058 | version = "0.19.4" 4059 | source = "registry+https://github.com/rust-lang/crates.io-index" 4060 | checksum = "28b94525fc99ba9e5c9a9e24764f2bc29bad0911a7446c12f446a8277369bf3a" 4061 | dependencies = [ 4062 | "arrayvec", 4063 | "bit-vec", 4064 | "bitflags 2.5.0", 4065 | "cfg_aliases 0.1.1", 4066 | "codespan-reporting", 4067 | "indexmap", 4068 | "log", 4069 | "naga", 4070 | "once_cell", 4071 | "parking_lot 0.12.2", 4072 | "profiling", 4073 | "raw-window-handle", 4074 | "rustc-hash", 4075 | "smallvec", 4076 | "thiserror", 4077 | "web-sys", 4078 | "wgpu-hal", 4079 | "wgpu-types", 4080 | ] 4081 | 4082 | [[package]] 4083 | name = "wgpu-hal" 4084 | version = "0.19.4" 4085 | source = "registry+https://github.com/rust-lang/crates.io-index" 4086 | checksum = "fc1a4924366df7ab41a5d8546d6534f1f33231aa5b3f72b9930e300f254e39c3" 4087 | dependencies = [ 4088 | "android_system_properties", 4089 | "arrayvec", 4090 | "ash", 4091 | "bit-set", 4092 | "bitflags 2.5.0", 4093 | "block", 4094 | "cfg_aliases 0.1.1", 4095 | "core-graphics-types", 4096 | "d3d12", 4097 | "glow", 4098 | "glutin_wgl_sys", 4099 | "gpu-alloc", 4100 | "gpu-allocator", 4101 | "gpu-descriptor", 4102 | "hassle-rs", 4103 | "js-sys", 4104 | "khronos-egl", 4105 | "libc", 4106 | "libloading 0.8.3", 4107 | "log", 4108 | "metal", 4109 | "naga", 4110 | "ndk-sys", 4111 | "objc", 4112 | "once_cell", 4113 | "parking_lot 0.12.2", 4114 | "profiling", 4115 | "range-alloc", 4116 | "raw-window-handle", 4117 | "renderdoc-sys", 4118 | "rustc-hash", 4119 | "smallvec", 4120 | "thiserror", 4121 | "wasm-bindgen", 4122 | "web-sys", 4123 | "wgpu-types", 4124 | "winapi", 4125 | ] 4126 | 4127 | [[package]] 4128 | name = "wgpu-types" 4129 | version = "0.19.2" 4130 | source = "registry+https://github.com/rust-lang/crates.io-index" 4131 | checksum = "b671ff9fb03f78b46ff176494ee1ebe7d603393f42664be55b64dc8d53969805" 4132 | dependencies = [ 4133 | "bitflags 2.5.0", 4134 | "js-sys", 4135 | "web-sys", 4136 | ] 4137 | 4138 | [[package]] 4139 | name = "widestring" 4140 | version = "1.1.0" 4141 | source = "registry+https://github.com/rust-lang/crates.io-index" 4142 | checksum = "7219d36b6eac893fa81e84ebe06485e7dcbb616177469b142df14f1f4deb1311" 4143 | 4144 | [[package]] 4145 | name = "winapi" 4146 | version = "0.3.9" 4147 | source = "registry+https://github.com/rust-lang/crates.io-index" 4148 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 4149 | dependencies = [ 4150 | "winapi-i686-pc-windows-gnu", 4151 | "winapi-x86_64-pc-windows-gnu", 4152 | ] 4153 | 4154 | [[package]] 4155 | name = "winapi-i686-pc-windows-gnu" 4156 | version = "0.4.0" 4157 | source = "registry+https://github.com/rust-lang/crates.io-index" 4158 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 4159 | 4160 | [[package]] 4161 | name = "winapi-util" 4162 | version = "0.1.8" 4163 | source = "registry+https://github.com/rust-lang/crates.io-index" 4164 | checksum = "4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b" 4165 | dependencies = [ 4166 | "windows-sys 0.52.0", 4167 | ] 4168 | 4169 | [[package]] 4170 | name = "winapi-x86_64-pc-windows-gnu" 4171 | version = "0.4.0" 4172 | source = "registry+https://github.com/rust-lang/crates.io-index" 4173 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 4174 | 4175 | [[package]] 4176 | name = "window_clipboard" 4177 | version = "0.4.1" 4178 | source = "registry+https://github.com/rust-lang/crates.io-index" 4179 | checksum = "f6d692d46038c433f9daee7ad8757e002a4248c20b0a3fbc991d99521d3bcb6d" 4180 | dependencies = [ 4181 | "clipboard-win", 4182 | "clipboard_macos", 4183 | "clipboard_wayland", 4184 | "clipboard_x11", 4185 | "raw-window-handle", 4186 | "thiserror", 4187 | ] 4188 | 4189 | [[package]] 4190 | name = "windows" 4191 | version = "0.52.0" 4192 | source = "registry+https://github.com/rust-lang/crates.io-index" 4193 | checksum = "e48a53791691ab099e5e2ad123536d0fff50652600abaf43bbf952894110d0be" 4194 | dependencies = [ 4195 | "windows-core 0.52.0", 4196 | "windows-targets 0.52.5", 4197 | ] 4198 | 4199 | [[package]] 4200 | name = "windows" 4201 | version = "0.54.0" 4202 | source = "registry+https://github.com/rust-lang/crates.io-index" 4203 | checksum = "9252e5725dbed82865af151df558e754e4a3c2c30818359eb17465f1346a1b49" 4204 | dependencies = [ 4205 | "windows-core 0.54.0", 4206 | "windows-targets 0.52.5", 4207 | ] 4208 | 4209 | [[package]] 4210 | name = "windows-core" 4211 | version = "0.52.0" 4212 | source = "registry+https://github.com/rust-lang/crates.io-index" 4213 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 4214 | dependencies = [ 4215 | "windows-targets 0.52.5", 4216 | ] 4217 | 4218 | [[package]] 4219 | name = "windows-core" 4220 | version = "0.54.0" 4221 | source = "registry+https://github.com/rust-lang/crates.io-index" 4222 | checksum = "12661b9c89351d684a50a8a643ce5f608e20243b9fb84687800163429f161d65" 4223 | dependencies = [ 4224 | "windows-result", 4225 | "windows-targets 0.52.5", 4226 | ] 4227 | 4228 | [[package]] 4229 | name = "windows-result" 4230 | version = "0.1.1" 4231 | source = "registry+https://github.com/rust-lang/crates.io-index" 4232 | checksum = "749f0da9cc72d82e600d8d2e44cadd0b9eedb9038f71a1c58556ac1c5791813b" 4233 | dependencies = [ 4234 | "windows-targets 0.52.5", 4235 | ] 4236 | 4237 | [[package]] 4238 | name = "windows-sys" 4239 | version = "0.45.0" 4240 | source = "registry+https://github.com/rust-lang/crates.io-index" 4241 | checksum = "75283be5efb2831d37ea142365f009c02ec203cd29a3ebecbc093d52315b66d0" 4242 | dependencies = [ 4243 | "windows-targets 0.42.2", 4244 | ] 4245 | 4246 | [[package]] 4247 | name = "windows-sys" 4248 | version = "0.48.0" 4249 | source = "registry+https://github.com/rust-lang/crates.io-index" 4250 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 4251 | dependencies = [ 4252 | "windows-targets 0.48.5", 4253 | ] 4254 | 4255 | [[package]] 4256 | name = "windows-sys" 4257 | version = "0.52.0" 4258 | source = "registry+https://github.com/rust-lang/crates.io-index" 4259 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 4260 | dependencies = [ 4261 | "windows-targets 0.52.5", 4262 | ] 4263 | 4264 | [[package]] 4265 | name = "windows-targets" 4266 | version = "0.42.2" 4267 | source = "registry+https://github.com/rust-lang/crates.io-index" 4268 | checksum = "8e5180c00cd44c9b1c88adb3693291f1cd93605ded80c250a75d472756b4d071" 4269 | dependencies = [ 4270 | "windows_aarch64_gnullvm 0.42.2", 4271 | "windows_aarch64_msvc 0.42.2", 4272 | "windows_i686_gnu 0.42.2", 4273 | "windows_i686_msvc 0.42.2", 4274 | "windows_x86_64_gnu 0.42.2", 4275 | "windows_x86_64_gnullvm 0.42.2", 4276 | "windows_x86_64_msvc 0.42.2", 4277 | ] 4278 | 4279 | [[package]] 4280 | name = "windows-targets" 4281 | version = "0.48.5" 4282 | source = "registry+https://github.com/rust-lang/crates.io-index" 4283 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 4284 | dependencies = [ 4285 | "windows_aarch64_gnullvm 0.48.5", 4286 | "windows_aarch64_msvc 0.48.5", 4287 | "windows_i686_gnu 0.48.5", 4288 | "windows_i686_msvc 0.48.5", 4289 | "windows_x86_64_gnu 0.48.5", 4290 | "windows_x86_64_gnullvm 0.48.5", 4291 | "windows_x86_64_msvc 0.48.5", 4292 | ] 4293 | 4294 | [[package]] 4295 | name = "windows-targets" 4296 | version = "0.52.5" 4297 | source = "registry+https://github.com/rust-lang/crates.io-index" 4298 | checksum = "6f0713a46559409d202e70e28227288446bf7841d3211583a4b53e3f6d96e7eb" 4299 | dependencies = [ 4300 | "windows_aarch64_gnullvm 0.52.5", 4301 | "windows_aarch64_msvc 0.52.5", 4302 | "windows_i686_gnu 0.52.5", 4303 | "windows_i686_gnullvm", 4304 | "windows_i686_msvc 0.52.5", 4305 | "windows_x86_64_gnu 0.52.5", 4306 | "windows_x86_64_gnullvm 0.52.5", 4307 | "windows_x86_64_msvc 0.52.5", 4308 | ] 4309 | 4310 | [[package]] 4311 | name = "windows_aarch64_gnullvm" 4312 | version = "0.42.2" 4313 | source = "registry+https://github.com/rust-lang/crates.io-index" 4314 | checksum = "597a5118570b68bc08d8d59125332c54f1ba9d9adeedeef5b99b02ba2b0698f8" 4315 | 4316 | [[package]] 4317 | name = "windows_aarch64_gnullvm" 4318 | version = "0.48.5" 4319 | source = "registry+https://github.com/rust-lang/crates.io-index" 4320 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 4321 | 4322 | [[package]] 4323 | name = "windows_aarch64_gnullvm" 4324 | version = "0.52.5" 4325 | source = "registry+https://github.com/rust-lang/crates.io-index" 4326 | checksum = "7088eed71e8b8dda258ecc8bac5fb1153c5cffaf2578fc8ff5d61e23578d3263" 4327 | 4328 | [[package]] 4329 | name = "windows_aarch64_msvc" 4330 | version = "0.42.2" 4331 | source = "registry+https://github.com/rust-lang/crates.io-index" 4332 | checksum = "e08e8864a60f06ef0d0ff4ba04124db8b0fb3be5776a5cd47641e942e58c4d43" 4333 | 4334 | [[package]] 4335 | name = "windows_aarch64_msvc" 4336 | version = "0.48.5" 4337 | source = "registry+https://github.com/rust-lang/crates.io-index" 4338 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 4339 | 4340 | [[package]] 4341 | name = "windows_aarch64_msvc" 4342 | version = "0.52.5" 4343 | source = "registry+https://github.com/rust-lang/crates.io-index" 4344 | checksum = "9985fd1504e250c615ca5f281c3f7a6da76213ebd5ccc9561496568a2752afb6" 4345 | 4346 | [[package]] 4347 | name = "windows_i686_gnu" 4348 | version = "0.42.2" 4349 | source = "registry+https://github.com/rust-lang/crates.io-index" 4350 | checksum = "c61d927d8da41da96a81f029489353e68739737d3beca43145c8afec9a31a84f" 4351 | 4352 | [[package]] 4353 | name = "windows_i686_gnu" 4354 | version = "0.48.5" 4355 | source = "registry+https://github.com/rust-lang/crates.io-index" 4356 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 4357 | 4358 | [[package]] 4359 | name = "windows_i686_gnu" 4360 | version = "0.52.5" 4361 | source = "registry+https://github.com/rust-lang/crates.io-index" 4362 | checksum = "88ba073cf16d5372720ec942a8ccbf61626074c6d4dd2e745299726ce8b89670" 4363 | 4364 | [[package]] 4365 | name = "windows_i686_gnullvm" 4366 | version = "0.52.5" 4367 | source = "registry+https://github.com/rust-lang/crates.io-index" 4368 | checksum = "87f4261229030a858f36b459e748ae97545d6f1ec60e5e0d6a3d32e0dc232ee9" 4369 | 4370 | [[package]] 4371 | name = "windows_i686_msvc" 4372 | version = "0.42.2" 4373 | source = "registry+https://github.com/rust-lang/crates.io-index" 4374 | checksum = "44d840b6ec649f480a41c8d80f9c65108b92d89345dd94027bfe06ac444d1060" 4375 | 4376 | [[package]] 4377 | name = "windows_i686_msvc" 4378 | version = "0.48.5" 4379 | source = "registry+https://github.com/rust-lang/crates.io-index" 4380 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 4381 | 4382 | [[package]] 4383 | name = "windows_i686_msvc" 4384 | version = "0.52.5" 4385 | source = "registry+https://github.com/rust-lang/crates.io-index" 4386 | checksum = "db3c2bf3d13d5b658be73463284eaf12830ac9a26a90c717b7f771dfe97487bf" 4387 | 4388 | [[package]] 4389 | name = "windows_x86_64_gnu" 4390 | version = "0.42.2" 4391 | source = "registry+https://github.com/rust-lang/crates.io-index" 4392 | checksum = "8de912b8b8feb55c064867cf047dda097f92d51efad5b491dfb98f6bbb70cb36" 4393 | 4394 | [[package]] 4395 | name = "windows_x86_64_gnu" 4396 | version = "0.48.5" 4397 | source = "registry+https://github.com/rust-lang/crates.io-index" 4398 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 4399 | 4400 | [[package]] 4401 | name = "windows_x86_64_gnu" 4402 | version = "0.52.5" 4403 | source = "registry+https://github.com/rust-lang/crates.io-index" 4404 | checksum = "4e4246f76bdeff09eb48875a0fd3e2af6aada79d409d33011886d3e1581517d9" 4405 | 4406 | [[package]] 4407 | name = "windows_x86_64_gnullvm" 4408 | version = "0.42.2" 4409 | source = "registry+https://github.com/rust-lang/crates.io-index" 4410 | checksum = "26d41b46a36d453748aedef1486d5c7a85db22e56aff34643984ea85514e94a3" 4411 | 4412 | [[package]] 4413 | name = "windows_x86_64_gnullvm" 4414 | version = "0.48.5" 4415 | source = "registry+https://github.com/rust-lang/crates.io-index" 4416 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 4417 | 4418 | [[package]] 4419 | name = "windows_x86_64_gnullvm" 4420 | version = "0.52.5" 4421 | source = "registry+https://github.com/rust-lang/crates.io-index" 4422 | checksum = "852298e482cd67c356ddd9570386e2862b5673c85bd5f88df9ab6802b334c596" 4423 | 4424 | [[package]] 4425 | name = "windows_x86_64_msvc" 4426 | version = "0.42.2" 4427 | source = "registry+https://github.com/rust-lang/crates.io-index" 4428 | checksum = "9aec5da331524158c6d1a4ac0ab1541149c0b9505fde06423b02f5ef0106b9f0" 4429 | 4430 | [[package]] 4431 | name = "windows_x86_64_msvc" 4432 | version = "0.48.5" 4433 | source = "registry+https://github.com/rust-lang/crates.io-index" 4434 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 4435 | 4436 | [[package]] 4437 | name = "windows_x86_64_msvc" 4438 | version = "0.52.5" 4439 | source = "registry+https://github.com/rust-lang/crates.io-index" 4440 | checksum = "bec47e5bfd1bff0eeaf6d8b485cc1074891a197ab4225d504cb7a1ab88b02bf0" 4441 | 4442 | [[package]] 4443 | name = "winit" 4444 | version = "0.29.15" 4445 | source = "registry+https://github.com/rust-lang/crates.io-index" 4446 | checksum = "0d59ad965a635657faf09c8f062badd885748428933dad8e8bdd64064d92e5ca" 4447 | dependencies = [ 4448 | "ahash", 4449 | "android-activity", 4450 | "atomic-waker", 4451 | "bitflags 2.5.0", 4452 | "bytemuck", 4453 | "calloop", 4454 | "cfg_aliases 0.1.1", 4455 | "core-foundation", 4456 | "core-graphics", 4457 | "cursor-icon", 4458 | "icrate", 4459 | "js-sys", 4460 | "libc", 4461 | "log", 4462 | "memmap2 0.9.4", 4463 | "ndk", 4464 | "ndk-sys", 4465 | "objc2", 4466 | "once_cell", 4467 | "orbclient", 4468 | "percent-encoding", 4469 | "raw-window-handle", 4470 | "redox_syscall 0.3.5", 4471 | "rustix", 4472 | "sctk-adwaita", 4473 | "smithay-client-toolkit", 4474 | "smol_str", 4475 | "unicode-segmentation", 4476 | "wasm-bindgen", 4477 | "wasm-bindgen-futures", 4478 | "wayland-backend", 4479 | "wayland-client", 4480 | "wayland-protocols", 4481 | "wayland-protocols-plasma", 4482 | "web-sys", 4483 | "web-time", 4484 | "windows-sys 0.48.0", 4485 | "x11-dl", 4486 | "x11rb", 4487 | "xkbcommon-dl", 4488 | ] 4489 | 4490 | [[package]] 4491 | name = "winnow" 4492 | version = "0.5.40" 4493 | source = "registry+https://github.com/rust-lang/crates.io-index" 4494 | checksum = "f593a95398737aeed53e489c785df13f3618e41dbcd6718c6addbf1395aa6876" 4495 | dependencies = [ 4496 | "memchr", 4497 | ] 4498 | 4499 | [[package]] 4500 | name = "winnow" 4501 | version = "0.6.8" 4502 | source = "registry+https://github.com/rust-lang/crates.io-index" 4503 | checksum = "c3c52e9c97a68071b23e836c9380edae937f17b9c4667bd021973efc689f618d" 4504 | dependencies = [ 4505 | "memchr", 4506 | ] 4507 | 4508 | [[package]] 4509 | name = "x11-dl" 4510 | version = "2.21.0" 4511 | source = "registry+https://github.com/rust-lang/crates.io-index" 4512 | checksum = "38735924fedd5314a6e548792904ed8c6de6636285cb9fec04d5b1db85c1516f" 4513 | dependencies = [ 4514 | "libc", 4515 | "once_cell", 4516 | "pkg-config", 4517 | ] 4518 | 4519 | [[package]] 4520 | name = "x11rb" 4521 | version = "0.13.1" 4522 | source = "registry+https://github.com/rust-lang/crates.io-index" 4523 | checksum = "5d91ffca73ee7f68ce055750bf9f6eca0780b8c85eff9bc046a3b0da41755e12" 4524 | dependencies = [ 4525 | "as-raw-xcb-connection", 4526 | "gethostname", 4527 | "libc", 4528 | "libloading 0.8.3", 4529 | "once_cell", 4530 | "rustix", 4531 | "x11rb-protocol", 4532 | ] 4533 | 4534 | [[package]] 4535 | name = "x11rb-protocol" 4536 | version = "0.13.1" 4537 | source = "registry+https://github.com/rust-lang/crates.io-index" 4538 | checksum = "ec107c4503ea0b4a98ef47356329af139c0a4f7750e621cf2973cd3385ebcb3d" 4539 | 4540 | [[package]] 4541 | name = "xcursor" 4542 | version = "0.3.5" 4543 | source = "registry+https://github.com/rust-lang/crates.io-index" 4544 | checksum = "6a0ccd7b4a5345edfcd0c3535718a4e9ff7798ffc536bb5b5a0e26ff84732911" 4545 | 4546 | [[package]] 4547 | name = "xdg-home" 4548 | version = "1.1.0" 4549 | source = "registry+https://github.com/rust-lang/crates.io-index" 4550 | checksum = "21e5a325c3cb8398ad6cf859c1135b25dd29e186679cf2da7581d9679f63b38e" 4551 | dependencies = [ 4552 | "libc", 4553 | "winapi", 4554 | ] 4555 | 4556 | [[package]] 4557 | name = "xkbcommon-dl" 4558 | version = "0.4.2" 4559 | source = "registry+https://github.com/rust-lang/crates.io-index" 4560 | checksum = "d039de8032a9a8856a6be89cea3e5d12fdd82306ab7c94d74e6deab2460651c5" 4561 | dependencies = [ 4562 | "bitflags 2.5.0", 4563 | "dlib", 4564 | "log", 4565 | "once_cell", 4566 | "xkeysym", 4567 | ] 4568 | 4569 | [[package]] 4570 | name = "xkeysym" 4571 | version = "0.2.0" 4572 | source = "registry+https://github.com/rust-lang/crates.io-index" 4573 | checksum = "054a8e68b76250b253f671d1268cb7f1ae089ec35e195b2efb2a4e9a836d0621" 4574 | 4575 | [[package]] 4576 | name = "xml-rs" 4577 | version = "0.8.20" 4578 | source = "registry+https://github.com/rust-lang/crates.io-index" 4579 | checksum = "791978798f0597cfc70478424c2b4fdc2b7a8024aaff78497ef00f24ef674193" 4580 | 4581 | [[package]] 4582 | name = "xxhash-rust" 4583 | version = "0.8.10" 4584 | source = "registry+https://github.com/rust-lang/crates.io-index" 4585 | checksum = "927da81e25be1e1a2901d59b81b37dd2efd1fc9c9345a55007f09bf5a2d3ee03" 4586 | 4587 | [[package]] 4588 | name = "yansi" 4589 | version = "1.0.1" 4590 | source = "registry+https://github.com/rust-lang/crates.io-index" 4591 | checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" 4592 | 4593 | [[package]] 4594 | name = "yazi" 4595 | version = "0.1.6" 4596 | source = "registry+https://github.com/rust-lang/crates.io-index" 4597 | checksum = "c94451ac9513335b5e23d7a8a2b61a7102398b8cca5160829d313e84c9d98be1" 4598 | 4599 | [[package]] 4600 | name = "zbus" 4601 | version = "4.2.1" 4602 | source = "registry+https://github.com/rust-lang/crates.io-index" 4603 | checksum = "e5915716dff34abef1351d2b10305b019c8ef33dcf6c72d31a6e227d5d9d7a21" 4604 | dependencies = [ 4605 | "async-broadcast", 4606 | "async-executor", 4607 | "async-fs", 4608 | "async-io", 4609 | "async-lock", 4610 | "async-process", 4611 | "async-recursion", 4612 | "async-task", 4613 | "async-trait", 4614 | "blocking", 4615 | "enumflags2", 4616 | "event-listener 5.3.0", 4617 | "futures-core", 4618 | "futures-sink", 4619 | "futures-util", 4620 | "hex", 4621 | "nix", 4622 | "ordered-stream", 4623 | "rand", 4624 | "serde", 4625 | "serde_repr", 4626 | "sha1", 4627 | "static_assertions", 4628 | "tracing", 4629 | "uds_windows", 4630 | "windows-sys 0.52.0", 4631 | "xdg-home", 4632 | "zbus_macros", 4633 | "zbus_names", 4634 | "zvariant", 4635 | ] 4636 | 4637 | [[package]] 4638 | name = "zbus_macros" 4639 | version = "4.2.1" 4640 | source = "registry+https://github.com/rust-lang/crates.io-index" 4641 | checksum = "66fceb36d0c1c4a6b98f3ce40f410e64e5a134707ed71892e1b178abc4c695d4" 4642 | dependencies = [ 4643 | "proc-macro-crate", 4644 | "proc-macro2", 4645 | "quote", 4646 | "syn 1.0.109", 4647 | "zvariant_utils", 4648 | ] 4649 | 4650 | [[package]] 4651 | name = "zbus_names" 4652 | version = "3.0.0" 4653 | source = "registry+https://github.com/rust-lang/crates.io-index" 4654 | checksum = "4b9b1fef7d021261cc16cba64c351d291b715febe0fa10dc3a443ac5a5022e6c" 4655 | dependencies = [ 4656 | "serde", 4657 | "static_assertions", 4658 | "zvariant", 4659 | ] 4660 | 4661 | [[package]] 4662 | name = "zeno" 4663 | version = "0.2.3" 4664 | source = "registry+https://github.com/rust-lang/crates.io-index" 4665 | checksum = "dd15f8e0dbb966fd9245e7498c7e9e5055d9e5c8b676b95bd67091cd11a1e697" 4666 | 4667 | [[package]] 4668 | name = "zerocopy" 4669 | version = "0.7.34" 4670 | source = "registry+https://github.com/rust-lang/crates.io-index" 4671 | checksum = "ae87e3fcd617500e5d106f0380cf7b77f3c6092aae37191433159dda23cfb087" 4672 | dependencies = [ 4673 | "zerocopy-derive", 4674 | ] 4675 | 4676 | [[package]] 4677 | name = "zerocopy-derive" 4678 | version = "0.7.34" 4679 | source = "registry+https://github.com/rust-lang/crates.io-index" 4680 | checksum = "15e934569e47891f7d9411f1a451d947a60e000ab3bd24fbb970f000387d1b3b" 4681 | dependencies = [ 4682 | "proc-macro2", 4683 | "quote", 4684 | "syn 2.0.63", 4685 | ] 4686 | 4687 | [[package]] 4688 | name = "zune-inflate" 4689 | version = "0.2.54" 4690 | source = "registry+https://github.com/rust-lang/crates.io-index" 4691 | checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" 4692 | dependencies = [ 4693 | "simd-adler32", 4694 | ] 4695 | 4696 | [[package]] 4697 | name = "zvariant" 4698 | version = "4.1.0" 4699 | source = "registry+https://github.com/rust-lang/crates.io-index" 4700 | checksum = "877ef94e5e82b231d2a309c531f191a8152baba8241a7939ee04bd76b0171308" 4701 | dependencies = [ 4702 | "endi", 4703 | "enumflags2", 4704 | "serde", 4705 | "static_assertions", 4706 | "url", 4707 | "zvariant_derive", 4708 | ] 4709 | 4710 | [[package]] 4711 | name = "zvariant_derive" 4712 | version = "4.1.0" 4713 | source = "registry+https://github.com/rust-lang/crates.io-index" 4714 | checksum = "b7ca98581cc6a8120789d8f1f0997e9053837d6aa5346cbb43454d7121be6e39" 4715 | dependencies = [ 4716 | "proc-macro-crate", 4717 | "proc-macro2", 4718 | "quote", 4719 | "syn 1.0.109", 4720 | "zvariant_utils", 4721 | ] 4722 | 4723 | [[package]] 4724 | name = "zvariant_utils" 4725 | version = "1.1.1" 4726 | source = "registry+https://github.com/rust-lang/crates.io-index" 4727 | checksum = "75fa7291bdd68cd13c4f97cc9d78cbf16d96305856dfc7ac942aeff4c2de7d5a" 4728 | dependencies = [ 4729 | "proc-macro2", 4730 | "quote", 4731 | "syn 1.0.109", 4732 | ] 4733 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "deci-player" 3 | version = "0.1.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | iced = { version = "0.12.1", default-features = false, features = ["wgpu", "image", "advanced"] } 8 | iced_aw = "0.8.0" 9 | rustfft = "6.2.0" 10 | rfd = "0.14.1" 11 | # rodio = "0.17.3" 12 | rodio = { git = "https://github.com/RustAudio/rodio.git" } 13 | toml = "0.8.12" 14 | serde = { version = "1.0", features = ["derive"] } 15 | paste = "1.0" 16 | itertools = "0.12.1" 17 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2024 Jedsek 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /MapleMono-NF-CN-Regular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/MapleMono-NF-CN-Regular.ttf -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # deci-player 2 | 3 | (WIP.) 4 | 5 | ## Intro 6 | 7 | A music-player written with rust + iced. 8 | 9 | ## Showcase 10 | 11 | ![show_1.png](./showcase/show_1.png) 12 | 13 | ![show_2.png](./showcase/show_2.png) 14 | 15 | ![show_3.png](./showcase/show_3.png) 16 | 17 | 18 | ## Roadmap 19 | 20 | - [x] floating-blurred background 21 | - [x] status line (volume, total duration, is_playing) 22 | - [x] multi-language lyrics 23 | - [ ] simple-ui mode (or ui-less mode) 24 | - [ ] audio visulization 25 | - [ ] i18n 26 | - [ ] animations for play/paused/next_song 27 | - [ ] document for usage of `config.toml` file 28 | - [ ] code optimized && improvement 29 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | [[music]] 2 | name = "アディオス" 3 | source_path = "./music_list/1/music_1.mp3" 4 | avatar = "./music_list/1/avatar.png" 5 | background = "./music_list/1/background.png" 6 | lyrics_first = "./music_list/1/zh.lrc" 7 | lyrics_second = "./music_list/1/jp.lrc" 8 | 9 | 10 | [[music]] 11 | name = "童游" 12 | source_path = "./music_list/2/music_2.mp3" 13 | avatar = "./music_list/2/avatar.png" 14 | background = "./music_list/2/background.png" 15 | lyrics_first = "./music_list/2/zh.lrc" 16 | lyrics_second = "./music_list/2/jp.lrc" 17 | 18 | -------------------------------------------------------------------------------- /music_list/1/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/music_list/1/avatar.png -------------------------------------------------------------------------------- /music_list/1/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/music_list/1/background.png -------------------------------------------------------------------------------- /music_list/1/jp.lrc: -------------------------------------------------------------------------------- 1 | [00:00.000] 作词 : Chinozo 2 | [00:00.374] 作曲 : Chinozo 3 | [00:00.748] 编曲 : Chinozo 4 | [00:01.122] 笑っていますか 5 | [00:04.482] キミから見た僕のフェイス 6 | [00:09.538] 分かっていますか 7 | [00:11.763] キミの瞳に孤独を感じてたの 8 | [00:17.003] 笑っていますか 9 | [00:19.494] 今キミといる僕は 10 | [00:24.570] 分かっていました 11 | [00:26.832] 今日はなんだか恋してみたい 恋してみたい 12 | [00:31.417] 13 | [00:31.912] アディオス アディオス アディオス アディオス 14 | [00:38.177] そんな目で見ないでよ 15 | [00:39.204] アディオス アディオス アディオス アディオス 16 | [00:46.337] 17 | [00:46.693] 僕ら分かり合いたいが分からない 18 | [00:50.760] それが当然だと分かるけど 19 | [00:54.200] 僕は分かり合えないなら逃げたい 20 | [00:58.248] この胸の擦り傷が乾くまで 21 | [01:02.412] フラフラ フラフラリ 22 | [01:05.635] いっそ恋してみたい 恋してみたい 23 | [01:09.893] フラフラ フラフラリ 24 | [01:13.001] いっそ恋してみたい 恋してみたい 25 | [01:16.406] 26 | [01:16.976] 笑っていますか 27 | [01:19.262] キミの夢見る僕は 28 | [01:24.479] 分かっていました 29 | [01:26.775] 今日もどうして恋してみたい 憐れまないで 30 | [01:31.399] 31 | [01:31.902] アディオス アディオス アディオス アディオス 32 | [01:38.226] 痛い痛い痛いの 33 | [01:39.359] アディオス アディオス アディオス アディオス 34 | [01:45.602] 35 | [01:46.687] 僕ら分かり合いたいが分からない 36 | [01:50.662] 都合よく見えないよ大体 37 | [01:54.188] 僕は分かり合えないなら逃げたい 38 | [01:58.156] 傷すらも気付けない世界なんて 39 | [02:01.950] 40 | [02:02.389] 誰も私に興味ない 41 | [02:03.928] ガラス一枚挟んだ声しか知らないって 42 | [02:06.397] 誰にも言わないけど 43 | [02:07.666] ただの怖がりだって分かってはいるけど 44 | [02:10.399] 僕には僕が青くて青くて仕方がないだけ 45 | [02:17.910] 46 | [02:18.701] アディオス アディオス 47 | [02:22.548] 48 | [02:26.055] 僕ら分かり合いたいが分からない 49 | [02:30.009] それが当然だと分かるけど 50 | [02:33.555] 僕は分かり合えないなら逃げたい 51 | [02:37.546] この胸の擦り傷が乾くまで 52 | [02:40.670] 53 | [02:41.024] 僕ら分かり合いたいが分からない 54 | [02:45.023] 都合よく見えないよ大体 55 | [02:48.577] 僕は分かり合えないなら逃げたい 56 | [02:52.494] 傷すらも気付けない世界なんて 57 | [02:55.786] 58 | [02:56.824] フラフラ フラフラリ 59 | [02:59.881] いっそ恋してみたい 恋してみたい 60 | [03:04.243] フラフラ フラフラリ 61 | [03:07.362] いっそ恋してみたい 恋してみたい 62 | [03:11.896] 63 | -------------------------------------------------------------------------------- /music_list/1/music_1.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/music_list/1/music_1.mp3 -------------------------------------------------------------------------------- /music_list/1/zh.lrc: -------------------------------------------------------------------------------- 1 | [by:沙沙响的曙光] 2 | [00:01.122]是在笑吗 3 | [00:04.482]你脑海中我的面容 4 | [00:09.538]你知道吗 5 | [00:11.763]你的眼睛透露着孤独 6 | [00:17.003]是在笑吗 7 | [00:19.494]如今伴你身旁的我 8 | [00:24.570]已经知晓 9 | [00:26.832]今天的我貌似是恋爱了呢 恋爱了呢 10 | [00:31.417] 11 | [00:31.912]再见 再见 再见 再见 12 | [00:38.177]不要用那种眼神看我啊 13 | [00:39.204]再见 再见 再见 再见 14 | [00:46.337] 15 | [00:46.693]想要了解彼此的我们却互相一无所知 16 | [00:50.760]我明白这也是无可奈何的 17 | [00:54.200]既然不能够了解你的话就让我逃走吧 18 | [00:58.248]直至这颗心上的伤痕结疤 19 | [01:02.412]忐忐忑忑 心儿荡漾 20 | [01:05.635]要不去试试恋爱吧 去试试恋爱吧 21 | [01:09.893]忐忐忑忑 心儿荡漾 22 | [01:13.001]那就去试试恋爱吧 去试试恋爱吧 23 | [01:16.406] 24 | [01:16.976]是在笑吗 25 | [01:19.262]你梦中的我 26 | [01:24.479]已然知晓 27 | [01:26.775]今天总想要去恋爱呢 请不要嫌我可怜 28 | [01:31.399] 29 | [01:31.902]再见 再见 再见 再见 30 | [01:38.226]让人痛苦的那些事 31 | [01:39.359]再见 再见 再见 再见 32 | [01:45.602] 33 | [01:46.687]想要了解彼此的我们却互相一无所知 34 | [01:50.662]说起来总是 找不到合适的机会呀 35 | [01:54.188]既然不能相互理解的话就让我逃走吧 36 | [01:58.156]去往那任何伤痕都不痛不痒的世界 37 | [02:01.950] 38 | [02:02.389]没有人会在意我 39 | [02:03.928]我知晓的仅仅是一块荧幕中你的声音 40 | [02:06.397]尽管我没有对任何人说 41 | [02:07.666]可我心中却早已明白我只是恐惧着 42 | [02:10.399]那对我而言太过于太过于耀眼的你 43 | [02:17.910] 44 | [02:18.701]再见了 再见了 45 | [02:22.548] 46 | [02:26.055]想要了解彼此的我们却互相一无所知 47 | [02:30.009]我明白这也是无可奈何的 48 | [02:33.555]既然不能够了解你的话就让我逃走吧 49 | [02:37.546]直至这颗心上的伤痕结疤 50 | [02:40.670] 51 | [02:41.024]想要了解彼此的我们却互相一无所知 52 | [02:45.023]说起来总是 找不到合适的机会呀 53 | [02:48.577]既然不能够了解你的话就让我逃走吧 54 | [02:52.494]去往那任何伤痕都不痛不痒的世界 55 | [02:55.786] 56 | [02:56.824]忐忐忑忑 心儿荡漾 57 | [02:59.881]要不去试试恋爱吧 去试试恋爱吧 58 | [03:04.243]忐忐忑忑 心儿荡漾 59 | [03:07.362]那就去试试恋爱吧 去试试恋爱吧 60 | [03:11.896] 61 | -------------------------------------------------------------------------------- /music_list/2/avatar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/music_list/2/avatar.png -------------------------------------------------------------------------------- /music_list/2/background.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/music_list/2/background.png -------------------------------------------------------------------------------- /music_list/2/jp.lrc: -------------------------------------------------------------------------------- 1 | [00:00.00] 作词 : 凋叶棕 2 | [00:00.59] 作曲 : ZUN 3 | [00:01.19] 4 | [00:01.20]花咲。 5 | [00:03.050]望み望まれてここに。 6 | [00:06.230]めでたきものはこれにあり。 7 | [00:09.770]夢と現と交えては。 8 | [00:13.750]幻想郷(まぼろしのくに)に、遊ぶがいい。 9 | [00:41.440] 10 | [00:48.830]空を征(ゆ)くものがいる。 11 | [00:52.730]怪異(かいい)を祓(はら)うものがいる。 12 | [00:56.540]それらを望む子らがいる。 13 | [01:03.340] 14 | [01:04.440]御伽噺(おとぎばなし)を耳にして。 15 | [01:08.110]思い巡(めぐ)らす其れ以上に。 16 | [01:12.100]生きる幻想が其処に居る。 17 | [01:17.970] 18 | [01:19.880]いつの世も 19 | [01:21.310]めでたきものは 20 | [01:24.030]往来(おうらい)の 21 | [01:26.650] 22 | [01:27.480]童遊(わらべあそび)の 23 | [01:29.590]なかにこそあれ 24 | [01:33.850] 25 | [01:34.660]華咲。 26 | [01:35.940]まこと優雅、舞うたれば。 27 | [01:39.240]華の都(みやこ)は、これにあり。 28 | [01:42.650]夢と現(うつつ)と交(まじ)えては。 29 | [01:46.700]今日も変わりなく町角(まちかど)に。 30 | [01:50.090]華散(はなちる)。 31 | [01:51.110]口伝伝承(むかしばなし)を祀(まつ)れば。 32 | [01:54.590]めでたきものはこれにあり。 33 | [01:58.090]夢と現と交えては。 34 | [02:02.010]幻想郷(まぼろしのくに)に遊ぶがいい。 35 | [02:08.890] 36 | [02:14.160]空で踊るものがいる。 37 | [02:17.760]怪異を使役(つか)うものがいる。 38 | [02:21.650]それらを真似る子らがいる。 39 | [02:29.580]拙(つたな)いものと思えども。 40 | [02:33.350]その手に握る其れこそが。 41 | [02:36.930]いつか幻想を生(う)んでいく。 42 | [02:43.480] 43 | [02:44.870]さあ詠(うた)え 44 | [02:46.590]舞い踊りては 45 | [02:49.200]華やかに 46 | [02:51.880] 47 | [02:52.650]己が描(えが)く 48 | [02:54.730]命名決闘(わらべあそび)を 49 | [02:58.560] 50 | [02:59.720]彩風(さやかぜ)。 51 | [03:00.630]まこと優雅、舞うたれば。 52 | [03:04.300]風の神も、めでたからむ。 53 | [03:07.990]夢と現と交えては。 54 | [03:11.990]明日(あす)の来る事を疑(いたが)わず。 55 | [03:15.370]微風(そよかぜ)。 56 | [03:16.470]名(ゆめ)をそこに、込め入れば。 57 | [03:19.970]道往く者も、めでたからむ。 58 | [03:23.420]夢と現と交えては。 59 | [03:27.290]幻想郷(まぼろしのくに)に遊ぶがいい。 60 | [03:34.010] 61 | [03:39.450]伝説の夢の国に生きて、生きて、生きて。 62 | [03:47.060]明日(あす)行く町角は片隅、そこかしこに。 63 | [03:54.860]耳を澄ませば、その息遣(いきづか)いを聞く。 64 | [04:02.480]空も、地の底も、星の水際(みぎわ)も全てに。 65 | [04:10.190]うつろいゆく季節(きせつ)の、その狭間でさえも。 66 | [04:18.070]望み望まれてそこにあり。 67 | [04:23.740] 68 | [04:24.990]華咲。 69 | [04:26.320]まこと優雅、舞うたれば。 70 | [04:29.630]華の都はこれにあり。 71 | [04:33.090]夢と現と交えては。 72 | [04:36.840]人も妖も諸共(もろとも)に。 73 | [04:40.510]華散。 74 | [04:41.320]そして日も、暮(く)れぬれば。 75 | [04:44.780]躍(おど)り疲れて家路(いえじ)なり。 76 | [04:48.500]夢と現と交えては。 77 | [04:52.360]幻想郷(まぼろしのくに)に遊ぶがいい。 78 | [04:55.800]華咲。 79 | [04:57.110]そしてまたも、町角に。 80 | [05:00.590]童遊(わらべあそび)の変わらずに。 81 | [05:04.100]夢と現と交えては。 82 | [05:07.850]幻想郷(まぼろしのくに)はこれにあり。 83 | [05:10.92] 84 | [05:10.93]華咲。 85 | [05:12.400]望み望まれてここに。 86 | [05:15.870]めでたきものはこれにあり。 87 | [05:19.650]夢と現と交えては。 88 | [05:23.350]幻想郷(まぼろしのくに)に、遊ぶがいい。 89 | -------------------------------------------------------------------------------- /music_list/2/music_2.mp3: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/music_list/2/music_2.mp3 -------------------------------------------------------------------------------- /music_list/2/zh.lrc: -------------------------------------------------------------------------------- 1 | [by:xyion] 2 | [00:01.20]花开似锦。 3 | [00:03.050]遂人愿己愿,绽放于此。 4 | [00:06.230]如画般的景致就在这里。 5 | [00:09.770]梦与现交错之际。 6 | [00:13.750]只消畅玩于,幻想乡(幻想之庭)。 7 | [00:48.830]有人征服了天空。 8 | [00:52.730]有人祓除了怪异。 9 | [00:56.540]有一群孩子将她们憧憬。 10 | [01:04.440]让童话伴于耳边。 11 | [01:08.110]将畅想筑于其间。 12 | [01:12.100]活生生的幻想就在那里。 13 | [01:19.880]万千之世界 14 | [01:21.310]美好的事物 15 | [01:24.030]都必然 16 | [01:27.480]存在于 17 | [01:29.590]熙攘的童游之中 18 | [01:34.660]花开似锦。 19 | [01:35.940]优雅无暇,飘然起舞。 20 | [01:39.240]花之都市,尽在于此。 21 | [01:42.650]梦与现交错之地。 22 | [01:46.700]在从未改变的街区之一隅。 23 | [01:50.090]花落如缤。 24 | [01:51.110]只愿交口相传的故事延续。 25 | [01:54.590]如画般的景致就在这里。 26 | [01:58.090]梦与现交错之际。 27 | [02:02.010]只消畅玩于幻想乡(幻想之庭)。 28 | [02:14.160]有人于凌空起舞。 29 | [02:17.760]有人将怪异使役。 30 | [02:21.650]有一群孩子向她们比拟。 31 | [02:29.580]虽然尚显笨拙。 32 | [02:33.350]但此刻他们手握之物。 33 | [02:36.930]终有一日,会将幻想孕育。 34 | [02:44.870]来吧,歌唱吧。 35 | [02:46.590]让那舞姿 36 | [02:49.200]华美绚丽 37 | [02:52.650]就由自己描绘 38 | [02:54.730]命名决斗(童游) 39 | [02:59.720]彩风阵阵。 40 | [03:00.630]优雅无暇,飘然起舞。 41 | [03:04.300]风之神亦满怀欣喜。 42 | [03:07.990]梦与现交错之际。 43 | [03:11.990]不需再为明日之事疑虑。 44 | [03:15.370]微风缕缕。 45 | [03:16.470]若能让名字(梦想)融于风中 46 | [03:19.970]踏上旅途之人,亦满心欢喜。 47 | [03:23.420]梦与现交错之际。 48 | [03:27.290]只消畅玩于幻想乡(幻想之庭)。 49 | [03:39.450]在传说的梦之国度生活、居住、成长。 50 | [03:47.060]散落于明日将要前往的街区的每一隅。 51 | [03:54.860]侧耳倾听,便能听见他们的呼吸。 52 | [04:02.480]在天空、在地底、在星之湖畔,在一切之中。 53 | [04:10.190]甚至在变迁着的季节的间隙。 54 | [04:18.070]如期望与被期望般,在那里生息。 55 | [04:24.990]花开似锦。 56 | [04:26.320]优雅无暇,飘然起舞。 57 | [04:29.630]花之都市,尽在于此。 58 | [04:33.090]梦与现交错之际。 59 | [04:36.840]人也罢,妖也罢,皆无异。 60 | [04:40.510]花落如缤。 61 | [04:41.320]天色亦随之,暗淡下去。 62 | [04:44.780]尽兴之后,沿着归途而行。 63 | [04:48.500]梦与现交错之际。 64 | [04:52.360]只消畅玩于幻想乡(幻想之庭)。 65 | [04:55.800]花开似锦。 66 | [04:57.110]再一次地,在那街区之中。 67 | [05:00.590]童游欢快如昔。 68 | [05:04.100]梦与现交错之地。 69 | [05:07.850]幻想乡(幻想之庭) 尽在于此。 70 | [05:10.93]花开似锦。 71 | [05:12.400]遂人愿己愿,绽放于此。 72 | [05:15.870]如画般的景致就在这里。 73 | [05:19.650]梦与现交错之际。 74 | [05:23.350]只消畅玩于,幻想乡(幻想之庭)。 -------------------------------------------------------------------------------- /showcase/show_1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/showcase/show_1.png -------------------------------------------------------------------------------- /showcase/show_2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/showcase/show_2.png -------------------------------------------------------------------------------- /showcase/show_3.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Jedsek/deci-player/d8dbf540baea2963473c669d5a27ab57c97de4f1/showcase/show_3.png -------------------------------------------------------------------------------- /src/audio.rs: -------------------------------------------------------------------------------- 1 | use itertools::Itertools; 2 | use rodio::{Decoder, OutputStream, Sink}; 3 | use rustfft::{num_complex::Complex, FftPlanner}; 4 | use std::{fs::File, io::BufReader, path::Path}; 5 | 6 | pub type TheSource = Decoder>; 7 | 8 | pub fn new_sink() -> Sink { 9 | let (stream, stream_handle) = OutputStream::try_default().unwrap(); 10 | Box::leak(Box::new(stream)); 11 | Sink::try_new(&stream_handle).unwrap() 12 | } 13 | 14 | pub fn new_source(path: impl AsRef) -> TheSource { 15 | let path = path.as_ref(); 16 | let source = File::open(path).unwrap(); 17 | let source = BufReader::new(source); 18 | Decoder::new(source).unwrap() 19 | } 20 | 21 | #[allow(unused)] 22 | pub fn sample(source: TheSource) { 23 | let to_complex = |x| Complex::new(x as i64, 0); 24 | let to_mod = |x: Complex| x.re * x.re + x.im * x.im; 25 | 26 | let chunk_size = 1024; 27 | let fft = FftPlanner::new().plan_fft_forward(chunk_size); 28 | 29 | for window in &source.map(to_complex).chunks(chunk_size) { 30 | let mut window = window.collect_vec(); 31 | 32 | if window.len() < 1024 { 33 | continue; 34 | } 35 | 36 | fft.process(&mut window); 37 | } 38 | 39 | std::process::exit(1); 40 | } 41 | -------------------------------------------------------------------------------- /src/config.rs: -------------------------------------------------------------------------------- 1 | #![allow(unused)] 2 | 3 | use serde::Deserialize; 4 | use std::{fs, path::Path}; 5 | 6 | #[derive(Deserialize)] 7 | struct Outer { 8 | #[serde(rename = "music")] 9 | inner: Vec, 10 | } 11 | 12 | #[derive(Deserialize)] 13 | pub struct Config { 14 | pub name: String, 15 | pub source_path: String, 16 | pub lyrics_first: Option, 17 | pub lyrics_second: Option, 18 | pub avatar: String, 19 | pub background: String, 20 | } 21 | 22 | impl Config { 23 | pub fn new(config_file: impl AsRef) -> Vec { 24 | let content = fs::read_to_string(config_file.as_ref()).unwrap(); 25 | let Outer { inner } = toml::from_str(&content).unwrap(); 26 | inner 27 | } 28 | } 29 | -------------------------------------------------------------------------------- /src/handle.rs: -------------------------------------------------------------------------------- 1 | use iced::{ 2 | advanced::graphics::core::SmolStr, 3 | keyboard::{key::Named, Key, Modifiers}, 4 | }; 5 | 6 | use crate::{Message, ViewMode}; 7 | 8 | pub fn handle_key(mode: ViewMode, key: Key, modifiers: Modifiers) -> Message { 9 | let key = key.as_ref(); 10 | 11 | match mode { 12 | ViewMode::Play => handle_in_normal(key, modifiers), 13 | ViewMode::Help => handle_in_help(key, modifiers), 14 | ViewMode::ConfirmQuit => handle_in_confirm_quit(key, modifiers), 15 | } 16 | } 17 | 18 | fn handle_in_confirm_quit(key: Key<&str>, _modifiers: Modifiers) -> Message { 19 | if let Key::Character(c) = key { 20 | match c { 21 | "y" => Message::Quit, 22 | "n" => Message::SwitchView(ViewMode::Play), 23 | _ => Message::Nothing, 24 | } 25 | } else { 26 | Message::Nothing 27 | } 28 | } 29 | 30 | fn handle_in_normal(key: Key<&str>, _modifiers: Modifiers) -> Message { 31 | if let Key::Character(c) = key { 32 | match c { 33 | "h" => Message::SwitchView(ViewMode::Help), 34 | "q" => Message::SwitchView(ViewMode::ConfirmQuit), 35 | "p" => Message::TogglePlay, 36 | "t" => Message::ToggleLang, 37 | "s" => Message::ToggleSpeed, 38 | _ => Message::Nothing, 39 | } 40 | } else if let Key::Named(n) = key { 41 | match n { 42 | Named::ArrowUp => Message::SetVolume(10), 43 | Named::ArrowDown => Message::SetVolume(-10), 44 | Named::ArrowRight => Message::NextSong, 45 | Named::ArrowLeft => Message::PrevSong, 46 | Named::Space => Message::TogglePlay, 47 | _ => Message::Nothing, 48 | } 49 | } else { 50 | Message::Nothing 51 | } 52 | } 53 | 54 | fn handle_in_help(key: Key<&str>, _modifiers: Modifiers) -> Message { 55 | if let Key::Character(c) = key { 56 | match c { 57 | "h" => Message::SwitchView(ViewMode::Play), 58 | _ => Message::Nothing, 59 | } 60 | } else { 61 | Message::Nothing 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /src/main.rs: -------------------------------------------------------------------------------- 1 | #![allow(clippy::single_match)] 2 | 3 | mod audio; 4 | mod config; 5 | mod handle; 6 | mod view; 7 | 8 | use std::time::Duration; 9 | 10 | use config::Config; 11 | use handle::handle_key; 12 | use iced::advanced::graphics::core::SmolStr; 13 | use iced::keyboard::{Key, Modifiers}; 14 | use iced::{executor, keyboard, window, Application, Command, Size, Subscription}; 15 | use iced::{Element, Font, Settings, Theme}; 16 | use rodio::{Sink, Source}; 17 | 18 | fn main() -> iced::Result { 19 | App::run(Settings { 20 | fonts: vec![include_bytes!("../MapleMono-NF-CN-Regular.ttf").into()], 21 | default_font: Font::with_name("Maple Mono NF CN"), 22 | // fonts: vec![include_bytes!("../SarasaMonoTC-Regular.ttf").into()], 23 | // default_font: Font::with_name("Sarasa Mono TC"), 24 | antialiasing: true, 25 | window: window::Settings { 26 | size: Size::new(1280.0, 720.0), 27 | ..Default::default() 28 | }, 29 | ..Default::default() 30 | }) 31 | } 32 | 33 | struct App { 34 | is_prev_playing: bool, 35 | mode: ViewMode, 36 | config: Vec, 37 | sink: Sink, 38 | current_pos: usize, 39 | current_source: audio::TheSource, 40 | slider_value: f32, 41 | time: Duration, 42 | lang: Lang, 43 | tick_secs: f32, 44 | speed: f32, 45 | } 46 | 47 | impl Default for App { 48 | fn default() -> Self { 49 | let sink = audio::new_sink(); 50 | let config = Config::new("./config.toml"); 51 | let current_pos = 0; 52 | let mode = ViewMode::Play; 53 | let lang = Lang::All; 54 | 55 | let source_path = &config[current_pos].source_path; 56 | sink.append(audio::new_source(source_path)); 57 | let current_source = audio::new_source(source_path); 58 | 59 | let time = Duration::ZERO; 60 | let slider_value = 0.0; 61 | let tick_secs = 0.1; 62 | let speed = 1.0; 63 | 64 | // audio::sample(current_source.clone()); 65 | 66 | for (idx, i) in config.iter().enumerate() { 67 | if idx != current_pos { 68 | let source = audio::new_source(&i.source_path); 69 | sink.append(source); 70 | } 71 | } 72 | 73 | // audio::sample(audio::new_source(source_path)); 74 | 75 | Self { 76 | is_prev_playing: true, 77 | mode, 78 | config, 79 | sink, 80 | current_pos, 81 | current_source, 82 | time, 83 | lang, 84 | slider_value, 85 | tick_secs, 86 | speed, 87 | } 88 | } 89 | } 90 | 91 | impl App { 92 | fn switch_view(&mut self, mode: ViewMode) { 93 | self.mode = mode; 94 | } 95 | 96 | fn update_time(&mut self) { 97 | if !self.sink.is_paused() { 98 | self.time += Duration::from_secs_f32(self.tick_secs * self.speed); 99 | self.slider_value += self.tick_secs; 100 | } 101 | 102 | if !self.sink.is_paused() && self.time >= self.current_source.total_duration().unwrap() { 103 | self.next_song(); 104 | } 105 | } 106 | 107 | fn skip_song(&self) { 108 | let sink = &self.sink; 109 | let source_path = &self.config[self.current_pos].source_path; 110 | 111 | sink.append(audio::new_source(source_path)); 112 | } 113 | 114 | fn next_pos(&self) -> usize { 115 | let max_pos = self.config.len() - 1; 116 | if self.current_pos >= max_pos { 117 | 0 118 | } else { 119 | self.current_pos + 1 120 | } 121 | } 122 | 123 | fn next_song(&mut self) { 124 | self.skip_song(); 125 | self.sink.play(); 126 | self.current_pos = self.next_pos(); 127 | self.time = Duration::ZERO; 128 | self.slider_value = 0.0; 129 | 130 | let source_path = &self.config[self.current_pos].source_path; 131 | self.current_source = audio::new_source(source_path); 132 | } 133 | 134 | // fn prev_pos(&self) -> usize { 135 | // let max_pos = self.config.len() - 1; 136 | // if self.current_pos == 0 { 137 | // max_pos 138 | // } else { 139 | // self.current_pos - 1 140 | // } 141 | // } 142 | 143 | // fn prev_song(&mut self) { 144 | // self.skip_song(); 145 | // self.current_pos = self.prev_pos(); 146 | // self.time = Duration::ZERO; 147 | // self.slider_value = 0.0; 148 | 149 | // let source_path = &self.config[self.current_pos].source_path; 150 | // self.current_source = audio::new_source(source_path); 151 | // } 152 | 153 | fn toggle_play(&mut self) { 154 | let sink = &self.sink; 155 | if sink.is_paused() { 156 | sink.play(); 157 | } else { 158 | sink.pause() 159 | } 160 | self.is_prev_playing = !sink.is_paused(); 161 | } 162 | 163 | fn set_volume(&self, relative_factor: i8) { 164 | let sink = &self.sink; 165 | let volume = ((sink.volume() * 100.0) as i8 + relative_factor).clamp(0, 100); 166 | sink.set_volume(volume as f32 / 100.0); 167 | } 168 | 169 | fn seek_audio(&mut self) { 170 | self.time = Duration::from_secs_f32(self.slider_value); 171 | self.sink.try_seek(self.time).unwrap(); 172 | } 173 | 174 | fn toggle_lang(&mut self) { 175 | self.lang = match self.lang { 176 | Lang::Chinese => Lang::Japanese, 177 | Lang::Japanese => Lang::All, 178 | Lang::All => Lang::Chinese, 179 | _ => unimplemented!(), 180 | } 181 | } 182 | 183 | fn toggle_speed(&mut self) { 184 | self.speed = match self.speed { 185 | 0.5 => 1.0, 186 | 1.0 => 1.5, 187 | 1.5 => 2.0, 188 | 2.0 => 0.5, 189 | _ => unreachable!(), 190 | }; 191 | self.sink.set_speed(self.speed); 192 | } 193 | } 194 | 195 | impl Application for App { 196 | type Executor = executor::Default; 197 | type Flags = (); 198 | type Message = Message; 199 | type Theme = Theme; 200 | 201 | fn new(_flags: ()) -> (Self, Command) { 202 | let app = Self::default(); 203 | (app, Command::none()) 204 | } 205 | 206 | fn title(&self) -> String { 207 | "Music player - Iced".into() 208 | } 209 | 210 | fn theme(&self) -> Theme { 211 | Theme::Nord 212 | } 213 | 214 | fn subscription(&self) -> Subscription { 215 | let key = keyboard::on_key_press(|key, modifiers| { 216 | let msg = Message::KeyInput { key, modifiers }; 217 | Some(msg) 218 | }); 219 | 220 | let time = 221 | iced::time::every(Duration::from_secs_f32(self.tick_secs)).map(|_| Message::UpdateTime); 222 | 223 | Subscription::batch([key, time]) 224 | } 225 | 226 | fn update(&mut self, msg: Message) -> Command { 227 | match msg { 228 | Message::TogglePlay => self.toggle_play(), 229 | Message::ToggleLang => self.toggle_lang(), 230 | Message::SetVolume(factor) => self.set_volume(factor), 231 | Message::NextSong => { 232 | self.next_song(); 233 | self.sink.skip_one() 234 | } 235 | // Message::PrevSong => self.prev_song(), 236 | Message::SwitchView(mode) => { 237 | if mode == ViewMode::Play && self.is_prev_playing { 238 | self.sink.play() 239 | } else { 240 | self.sink.pause() 241 | } 242 | self.switch_view(mode) 243 | } 244 | Message::Quit => { 245 | std::process::exit(0); 246 | } 247 | Message::KeyInput { key, modifiers } => { 248 | let msg = handle_key(self.mode, key, modifiers); 249 | return self.update(msg); 250 | } 251 | Message::UpdateTime => self.update_time(), 252 | Message::SeekAudio => self.seek_audio(), 253 | Message::UpdateSlider(val) => self.slider_value = val, 254 | Message::ToggleSpeed => self.toggle_speed(), 255 | _ => (), 256 | }; 257 | 258 | Command::none() 259 | } 260 | 261 | fn view(&self) -> Element { 262 | match self.mode { 263 | ViewMode::Play => view::play(self), 264 | ViewMode::Help => view::help(self), 265 | ViewMode::ConfirmQuit => view::confirm_quit(self), 266 | } 267 | } 268 | } 269 | 270 | #[derive(Debug, Clone, Copy, PartialEq, Eq)] 271 | enum ViewMode { 272 | Play, 273 | Help, 274 | ConfirmQuit, 275 | } 276 | 277 | #[derive(Debug, Clone)] 278 | enum Message { 279 | Nothing, 280 | TogglePlay, 281 | ToggleLang, 282 | SetVolume(i8), 283 | NextSong, 284 | PrevSong, 285 | SwitchView(ViewMode), 286 | KeyInput { 287 | key: Key, 288 | modifiers: Modifiers, 289 | }, 290 | Quit, 291 | UpdateSlider(f32), 292 | ToggleSpeed, 293 | UpdateTime, 294 | SeekAudio, 295 | } 296 | 297 | #[derive(Debug, Clone, Copy)] 298 | enum Lang { 299 | All, 300 | Chinese, 301 | Japanese, 302 | #[allow(dead_code)] 303 | English, 304 | } 305 | -------------------------------------------------------------------------------- /src/view.rs: -------------------------------------------------------------------------------- 1 | mod utils; 2 | 3 | use std::{fs, sync::OnceLock}; 4 | 5 | use crate::{config::Config, App, Lang, Message}; 6 | use iced::{ 7 | alignment::Horizontal, 8 | widget::{button, column, image, row, text, Column, Container, Slider}, 9 | Alignment, Element, Length, 10 | }; 11 | use iced_aw::floating_element; 12 | use iced_aw::floating_element::Anchor; 13 | use itertools::Itertools; 14 | use rodio::Source; 15 | 16 | const KEY_DESCRIPTION: &[(&str, &str)] = &[ 17 | ("\n● 模式/播放", "\n"), 18 | ("h", "进入帮助页面"), 19 | ("[p, space]", "播放/暂停"), 20 | ("t", "切换语言(默认双语字幕, 每次切换至中文/日语/双语)"), 21 | ("s", "切换播放速度"), 22 | ("q", "关闭应用"), 23 | ("\n\n● 模式/帮助", "\n"), 24 | ("h", "退出帮助页面"), 25 | ("\n\n● 模式/退出", "\n"), 26 | ("y", "确认"), 27 | ("n", "取消"), 28 | ]; 29 | 30 | const TITLE_SIZE: u16 = 36; 31 | const TITLE_PADDING: u16 = 20; 32 | const CONTENT_SIZE: u16 = 20; 33 | 34 | pub fn play(app: &App) -> Element { 35 | let Config { 36 | name, 37 | avatar, 38 | background, 39 | .. 40 | } = &app.config[app.current_pos]; 41 | 42 | let background = utils::background_image(background); 43 | 44 | let avatar = image(avatar).width(400).height(400); 45 | let name = text(name) 46 | .size(40) 47 | // .width(Length::Fill) 48 | // .horizontal_alignment(Horizontal::Center) 49 | .style(utils::text(utils::black())); 50 | let status_line = status_line(app); 51 | 52 | let lyric = match app.lang { 53 | Lang::All => { 54 | let lyric_1 = get_lyrics(app, Lang::Chinese).unwrap_or_default(); 55 | let lyric_1 = text(lyric_1).size(30).style(utils::text(utils::black())); 56 | 57 | let lyric_2 = get_lyrics(app, Lang::Japanese).unwrap_or_default(); 58 | let lyric_2 = text(lyric_2).size(30).style(utils::text(utils::black())); 59 | column!(lyric_1, lyric_2) 60 | } 61 | single_lang => { 62 | let lyric = get_lyrics(app, single_lang).unwrap_or_default(); 63 | let lyric = text(lyric).size(30).style(utils::text(utils::black())); 64 | column!(lyric) 65 | } 66 | }; 67 | 68 | let lyric = lyric.padding(40).align_items(Alignment::Center); 69 | 70 | let total_duration = get_total_duration(app); 71 | let slider = Slider::new( 72 | 0.0..=total_duration, 73 | app.slider_value, 74 | Message::UpdateSlider, 75 | ) 76 | .on_release(Message::SeekAudio) 77 | .height(15) 78 | .width(600) 79 | .style(utils::StyledSlider::new()); 80 | 81 | let right = column!(name, status_line, slider, lyric) 82 | .spacing(5) 83 | .width(Length::Fill) 84 | .align_items(Alignment::Center); 85 | 86 | // let right = Container::new(right).center_x(); 87 | 88 | let container = row!(avatar, right); 89 | let container = floating_element(background, container) 90 | .anchor(Anchor::NorthWest) 91 | .offset([90.0, 150.0]); 92 | 93 | container.into() 94 | } 95 | 96 | pub fn help(_app: &App) -> Element { 97 | let title = text("Help") 98 | .width(Length::Shrink) 99 | .size(TITLE_SIZE) 100 | .horizontal_alignment(Horizontal::Center) 101 | .style(utils::text(utils::cyan())); 102 | let title = row!(title).padding(TITLE_PADDING); 103 | 104 | let mut content = Column::new().padding(5); 105 | for (key, desc) in get_help_text() { 106 | let to_text = |s| { 107 | text(s) 108 | .width(Length::Shrink) 109 | .size(CONTENT_SIZE) 110 | .style(utils::text(utils::cyan())) 111 | }; 112 | let (key, desc) = (to_text(key), to_text(desc)); 113 | let row = row!(key, desc).spacing(50).padding(2); 114 | content = content.push(row); 115 | } 116 | let content = Container::new(content).width(Length::Fill).center_x(); 117 | 118 | let container = column!(title, content).spacing(20); 119 | let container = Container::new(container).width(Length::Shrink).center_x(); 120 | 121 | container.into() 122 | } 123 | 124 | pub fn confirm_quit(_app: &App) -> Element { 125 | let title = text("Quit?") 126 | .width(Length::Shrink) 127 | .size(TITLE_SIZE) 128 | .horizontal_alignment(Horizontal::Center) 129 | .style(utils::text(utils::cyan())); 130 | let title = row!(title).padding(TITLE_PADDING); 131 | 132 | let tips = text("Y / N") 133 | .width(Length::Shrink) 134 | .size(CONTENT_SIZE * 2) 135 | .style(utils::text(utils::cyan())); 136 | let tips = Container::new(tips).width(Length::Fill).center_x(); 137 | 138 | let container = column!(title, tips).spacing(20); 139 | let container = Container::new(container).width(Length::Shrink).center_x(); 140 | 141 | container.into() 142 | } 143 | 144 | pub fn status_line(app: &App) -> Element { 145 | const STATUS_LINE_SIZE: u16 = 20; 146 | 147 | // volume 148 | let volume = format!("音量: {}%", (app.sink.volume() * 100.0) as i8); 149 | let volume = text(volume) 150 | .size(STATUS_LINE_SIZE) 151 | .style(utils::text(utils::black())); 152 | 153 | // time 154 | let time = { 155 | let get_time = |secs| (secs / 60, secs % 60); 156 | 157 | let (minute, second) = get_time(app.time.as_secs()); 158 | let (total_minute, total_second) = 159 | get_time(app.current_source.total_duration().unwrap().as_secs()); 160 | 161 | let time = if minute != 0 { 162 | format!( 163 | "已播放: {}m{}s/{}m{}s", 164 | minute, second, total_minute, total_second, 165 | ) 166 | } else { 167 | format!("已播放: {}s/{}m{}s", second, total_minute, total_second,) 168 | }; 169 | 170 | text(time) 171 | .size(STATUS_LINE_SIZE) 172 | .style(utils::text(utils::black())) 173 | }; 174 | 175 | // is_paused 176 | let is_paused = text(if app.sink.is_paused() { 177 | "暂停中" 178 | } else { 179 | "播放中" 180 | }) 181 | .size(STATUS_LINE_SIZE) 182 | .style(utils::text(utils::black())); 183 | 184 | // speed 185 | let speed = text(format!("速度: {:.1}", app.sink.speed())).size(STATUS_LINE_SIZE); 186 | let speed = button(speed) 187 | .on_press(Message::ToggleSpeed) 188 | .padding(0) 189 | .style(utils::StyledButton::new()); 190 | // let speed = Container::new(speed). 191 | 192 | row!(time, volume, speed, is_paused).spacing(30).into() 193 | } 194 | 195 | fn get_help_text() -> &'static Vec<(String, String)> { 196 | static KEY_DESCRIPTION_CACHE: OnceLock> = OnceLock::new(); 197 | 198 | KEY_DESCRIPTION_CACHE.get_or_init(|| { 199 | let get_len = |s: &str| { 200 | s.chars() 201 | .fold(0, |acc, ch| acc + if ch.is_ascii() { 1 } else { 2 }) 202 | }; 203 | 204 | let get_format = |s: &str, max_len: usize| { 205 | let count = max_len - get_len(s); 206 | String::from(s) + " ".repeat(count).as_str() 207 | }; 208 | 209 | let (mut key_max_len, mut desc_max_len) = (0, 0); 210 | for (key, desc) in KEY_DESCRIPTION { 211 | key_max_len = get_len(key).max(key_max_len); 212 | desc_max_len = get_len(desc).max(desc_max_len); 213 | } 214 | 215 | KEY_DESCRIPTION 216 | .iter() 217 | .map(|(key, desc)| { 218 | let key = get_format(key, key_max_len); 219 | let desc = get_format(desc, desc_max_len); 220 | (key, desc) 221 | }) 222 | .collect() 223 | }) 224 | } 225 | 226 | fn get_total_duration(app: &App) -> f32 { 227 | app.current_source.total_duration().unwrap().as_secs_f32() 228 | } 229 | 230 | fn get_lyrics(app: &App, lang: Lang) -> Option { 231 | let config = &app.config; 232 | let pos = app.current_pos; 233 | 234 | let path = match lang { 235 | Lang::Chinese => config[pos].lyrics_first.as_ref(), 236 | Lang::Japanese => config[pos].lyrics_second.as_ref(), 237 | _ => unimplemented!(), 238 | }; 239 | 240 | let path = path.unwrap(); 241 | let lyric = fs::read_to_string(path).unwrap(); 242 | let duration = app.time.as_secs_f32(); 243 | 244 | let mut s = ""; 245 | let result = lyric.lines().rev().find(|line| { 246 | let pos = line.chars().positions(|v| "[:]".contains(v)).collect_vec(); 247 | 248 | if pos.len() < 3 || !(line[1..=1].chars().collect_vec()[0]).is_ascii_digit() { 249 | return false; 250 | } 251 | 252 | let minute = &line[(pos[0] + 1)..pos[1]]; 253 | let second = &line[(pos[1] + 1)..pos[2]]; 254 | s = &line[(pos[2] + 1)..]; 255 | 256 | let time = minute 257 | .parse::() 258 | .and_then(|m| second.parse::().map(|s| m * 60.0 + s)) 259 | .ok(); 260 | 261 | time.is_some() && !s.is_empty() && duration >= time.unwrap() 262 | }); 263 | result.map(|_| s.to_string().replace([',', '。'], " ")) 264 | } 265 | -------------------------------------------------------------------------------- /src/view/utils.rs: -------------------------------------------------------------------------------- 1 | #![allow(unused)] 2 | 3 | use iced::{ 4 | border::Radius, 5 | theme::{self, Text}, 6 | widget::{self, button, image, slider, Image}, 7 | Border, Color, ContentFit, Length, Shadow, Theme, Vector, 8 | }; 9 | 10 | pub fn background_image(handle: impl Into) -> Image { 11 | image(handle) 12 | .width(Length::Fill) 13 | .height(Length::Fill) 14 | .content_fit(ContentFit::Cover) 15 | } 16 | 17 | pub fn text(color: Color) -> Text { 18 | Text::Color(color) 19 | } 20 | 21 | pub fn transparent() -> Color { 22 | Color::from_rgba8(0, 0, 0, 0.0) 23 | } 24 | 25 | pub fn black() -> Color { 26 | Color::from_rgba8(0, 0, 0, 1.0) 27 | } 28 | 29 | pub fn white() -> Color { 30 | Color::from_rgba8(255, 255, 255, 1.0) 31 | } 32 | 33 | pub fn cyan() -> Color { 34 | Color::from_rgba8(224, 255, 255, 1.0) 35 | } 36 | 37 | pub fn blue() -> Color { 38 | Color::from_rgb8(3, 138, 255) 39 | } 40 | 41 | pub struct StyledSlider; 42 | impl slider::StyleSheet for StyledSlider { 43 | type Style = Theme; 44 | 45 | fn active(&self, style: &Self::Style) -> slider::Appearance { 46 | slider::Appearance { 47 | rail: slider::Rail { 48 | colors: (black(), blue()), 49 | width: 3.0, 50 | border_radius: Radius::from(0.0), 51 | }, 52 | handle: slider::Handle { 53 | shape: slider::HandleShape::Rectangle { 54 | width: 10, 55 | border_radius: Radius::from(1000.0), 56 | }, 57 | color: white(), 58 | border_width: 1.0, 59 | border_color: black(), 60 | }, 61 | } 62 | } 63 | 64 | fn hovered(&self, style: &Self::Style) -> slider::Appearance { 65 | Self::active(self, style) 66 | } 67 | 68 | fn dragging(&self, style: &Self::Style) -> slider::Appearance { 69 | Self::active(self, style) 70 | } 71 | } 72 | 73 | pub struct StyledButton; 74 | impl button::StyleSheet for StyledButton { 75 | type Style = Theme; 76 | 77 | fn active(&self, style: &Self::Style) -> button::Appearance { 78 | button::Appearance { 79 | background: Some(iced::Background::Color(transparent())), 80 | text_color: black(), 81 | ..Default::default() 82 | } 83 | } 84 | } 85 | 86 | macro_rules! impl_new { 87 | ($($t:ident), *) => {$( 88 | paste::paste! { 89 | #[allow(clippy::new_ret_no_self)] 90 | impl [] { 91 | pub fn new() -> iced::theme::$t { 92 | iced::theme::$t::Custom(Box::new(Self)) 93 | } 94 | } 95 | } 96 | )*}; 97 | } 98 | 99 | impl_new!(Slider, Button); 100 | -------------------------------------------------------------------------------- /to.sh: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env bash 2 | 3 | image=$1 4 | 5 | # gblur 6 | a=20 7 | b=2 8 | 9 | # boxblur 10 | c=1 11 | d=1 12 | 13 | # alpha 14 | e=1 15 | 16 | ffmpeg -y -i $image -vf "gblur=sigma=$a:steps=$b,boxblur=$c:$d,colorchannelmixer=aa=$e" background.png 17 | --------------------------------------------------------------------------------