diff --git a/Cargo.lock b/Cargo.lock index dadccd45d6..ba3d1e8140 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -35,6 +35,12 @@ version = "1.0.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" +[[package]] +name = "adler32" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" + [[package]] name = "aes" version = "0.8.4" @@ -110,12 +116,6 @@ version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "250f629c0161ad8107cf89319e990051fae62832fd343083bea452d93e2205fd" -[[package]] -name = "aligned-vec" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4aa90d7ce82d4be67b64039a3d588d38dbcc6736577de4a847025ce5b0c468d1" - [[package]] name = "allocator-api2" version = "0.2.16" @@ -246,23 +246,18 @@ version = "1.3.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" -[[package]] -name = "arg_enum_proc_macro" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ae92a5119aa49cdbcf6b9f893fe4e1d98b04ccbf82ee0584ad948a44a734dea" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] - [[package]] name = "arrayref" version = "0.3.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6b4930d2cb77ce62f89ee5d5289b4ac049559b1c45539271f5ed4fdc7db34545" +[[package]] +name = "arrayvec" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "23b62fc65de8e4e7f52534fb52b0f3ed04746ae267519eef2a83941e8085068b" + [[package]] name = "arrayvec" version = "0.7.4" @@ -303,9 +298,9 @@ dependencies = [ [[package]] name = "ashpd" -version = "0.8.0" +version = "0.8.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b22517ee647547c01a687cf9b76074e1c91334032a4324f7243c6ee0f949390" +checksum = "dd884d7c72877a94102c3715f3b1cd09ff4fac28221add3e57cfbe25c236d093" dependencies = [ "async-fs 2.1.1", "async-net 2.0.0", @@ -834,29 +829,6 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" -[[package]] -name = "av1-grain" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6678909d8c5d46a42abcf571271e15fdbc0a225e3646cf23762cd415046c78bf" -dependencies = [ - "anyhow", - "arrayvec", - "log", - "nom", - "num-rational", - "v_frame", -] - -[[package]] -name = "avif-serialize" -version = "0.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "876c75a42f6364451a033496a14c44bffe41f5f4a8236f697391f11024e596d2" -dependencies = [ - "arrayvec", -] - [[package]] name = "aws-config" version = "1.1.5" @@ -1303,7 +1275,7 @@ dependencies = [ "cc", "cfg-if", "libc", - "miniz_oxide", + "miniz_oxide 0.7.1", "object", "rustc-demangle", ] @@ -1426,12 +1398,6 @@ version = "0.6.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb" -[[package]] -name = "bit_field" -version = "0.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc827186963e592360843fb5ba4b973e145841266c1357f7180c43526f2e5b61" - [[package]] name = "bitflags" version = "1.3.2" @@ -1447,12 +1413,6 @@ dependencies = [ "serde", ] -[[package]] -name = "bitstream-io" -version = "2.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06c9989a51171e2e81038ab168b6ae22886fe9ded214430dbb4f41c28cf176da" - [[package]] name = "bitvec" version = "1.0.1" @@ -1634,12 +1594,6 @@ dependencies = [ "serde", ] -[[package]] -name = "built" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "38d17f4d6e4dc36d1a02fbedc2753a096848e7c1b0772f7654eab8e2c927dd53" - [[package]] name = "bumpalo" version = "3.14.0" @@ -1905,16 +1859,6 @@ dependencies = [ "nom", ] -[[package]] -name = "cfg-expr" -version = "0.15.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa50868b64a9a6fda9d593ce778849ea8715cd2a3d2cc17ffdb4a2f2f2f1961d" -dependencies = [ - "smallvec", - "target-lexicon", -] - [[package]] name = "cfg-if" version = "1.0.0" @@ -2632,16 +2576,16 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c578f2b9abb4d5f3fbb12aba4008084d435dc6a8425c195cfe0b3594bfea0c25" dependencies = [ "bitflags 2.4.2", - "fontdb", + "fontdb 0.16.2", "libm", "log", "rangemap", "rustc-hash", - "rustybuzz", + "rustybuzz 0.12.1", "self_cell", "swash", "sys-locale", - "ttf-parser", + "ttf-parser 0.20.0", "unicode-bidi", "unicode-linebreak", "unicode-script", @@ -2886,12 +2830,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "crunchy" -version = "0.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7" - [[package]] name = "crypto-bigint" version = "0.4.9" @@ -3018,9 +2956,12 @@ checksum = "7e962a19be5cfc3f3bf6dd8f61eb50107f356ad6270fbb3ed41476571db78be5" [[package]] name = "data-url" -version = "0.3.1" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c297a1c74b71ae29df00c3e22dd9534821d60eb9af5a0192823fa2acea70c2a" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" +dependencies = [ + "matches", +] [[package]] name = "db" @@ -3039,6 +2980,16 @@ dependencies = [ "util", ] +[[package]] +name = "deflate" +version = "0.8.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73770f8e1fe7d64df17ca66ad28994a0a623ea497fa69486e14984e715c5d174" +dependencies = [ + "adler32", + "byteorder", +] + [[package]] name = "der" version = "0.6.1" @@ -3534,22 +3485,6 @@ dependencies = [ "pin-project-lite", ] -[[package]] -name = "exr" -version = "1.72.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "887d93f60543e9a9362ef8a21beedd0a833c5d9610e18c67abe15a5963dcb1a4" -dependencies = [ - "bit_field", - "flume", - "half", - "lebe", - "miniz_oxide", - "rayon-core", - "smallvec", - "zune-inflate", -] - [[package]] name = "extension" version = "0.1.0" @@ -3685,15 +3620,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "fdeflate" -version = "0.3.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4f9bfee30e4dedf0ab8b422f03af778d9612b63f502710fc500a334ebe2de645" -dependencies = [ - "simd-adler32", -] - [[package]] name = "feature_flags" version = "0.1.0" @@ -3808,14 +3734,14 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c6c98ee8095e9d1dcbf2fcc6d95acccb90d1c81db1e44725c6a984b1dbdfb010" dependencies = [ "crc32fast", - "miniz_oxide", + "miniz_oxide 0.7.1", ] [[package]] name = "float-cmp" -version = "0.9.0" +version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +checksum = "75224bec9bfe1a65e2d34132933f2de7fe79900c96a0174307554244ece8150e" [[package]] name = "float-ord" @@ -3877,7 +3803,18 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6a595cb550439a117696039dfc69830492058211b771a2a165379f2a1a53d84d" dependencies = [ - "roxmltree", + "roxmltree 0.19.0", +] + +[[package]] +name = "fontdb" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e58903f4f8d5b58c7d300908e4ebe5289c1bfdf5587964330f12023b8ff17fd1" +dependencies = [ + "log", + "memmap2 0.2.3", + "ttf-parser 0.12.3", ] [[package]] @@ -3891,7 +3828,7 @@ dependencies = [ "memmap2 0.9.4", "slotmap", "tinyvec", - "ttf-parser", + "ttf-parser 0.20.0", ] [[package]] @@ -4251,19 +4188,9 @@ dependencies = [ [[package]] name = "gif" -version = "0.12.0" +version = "0.11.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "80792593675e051cf94a4b111980da2ba60d4a83e43e0048c5693baab3977045" -dependencies = [ - "color_quant", - "weezl", -] - -[[package]] -name = "gif" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3fb2d69b19215e18bb912fa30f7ce15846e301408695e44e0ef719f1da9e19f2" +checksum = "3edd93c6756b4dfaf2709eafcc345ba2636565295c198a9cfbf75fa5e3e00b06" dependencies = [ "color_quant", "weezl", @@ -4486,6 +4413,8 @@ dependencies = [ "taffy", "thiserror", "time", + "tiny-skia", + "usvg", "util", "uuid", "waker-fn", @@ -4543,16 +4472,6 @@ dependencies = [ "tracing", ] -[[package]] -name = "half" -version = "2.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b5eceaaeec696539ddaf7b333340f1af35a5aa87ae3e4f3ead0532f72affab2e" -dependencies = [ - "cfg-if", - "crunchy", -] - [[package]] name = "hashbrown" version = "0.12.3" @@ -4632,12 +4551,6 @@ dependencies = [ "unicode-segmentation", ] -[[package]] -name = "heck" -version = "0.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" - [[package]] name = "hermit-abi" version = "0.1.19" @@ -4892,35 +4805,21 @@ dependencies = [ [[package]] name = "image" -version = "0.25.0" +version = "0.23.14" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a9b4f005360d32e9325029b38ba47ebd7a56f3316df09249368939562d518645" +checksum = "24ffcb7e7244a9bf19d35bf2883b9c080c4ced3c07a9895572178cdb8f13f6a1" dependencies = [ "bytemuck", "byteorder", "color_quant", - "exr", - "gif 0.13.1", - "image-webp", + "gif", + "jpeg-decoder", + "num-iter", + "num-rational 0.3.2", "num-traits", "png", - "qoi", - "ravif", - "rayon", - "rgb", + "scoped_threadpool", "tiff", - "zune-core", - "zune-jpeg", -] - -[[package]] -name = "image-webp" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7a84a25dcae3ac487bc24ef280f9e20c79c9b1a3e5e32cbed3041d1c514aa87c" -dependencies = [ - "byteorder", - "thiserror", ] [[package]] @@ -4936,18 +4835,6 @@ dependencies = [ "workspace", ] -[[package]] -name = "imagesize" -version = "0.12.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "029d73f573d8e8d63e6d5020011d3255b28c3ba85d6cf870a07184ed23de9284" - -[[package]] -name = "imgref" -version = "1.10.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44feda355f4159a7c757171a77de25daf6411e217b4cabd03bd6650690468126" - [[package]] name = "indexmap" version = "1.9.3" @@ -5036,17 +4923,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "interpolate_name" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c34819042dc3d3971c46c2190835914dfbe0c3c13f61449b2997f4e9722dfa60" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] - [[package]] name = "io-extras" version = "0.18.1" @@ -5248,9 +5124,12 @@ dependencies = [ [[package]] name = "jpeg-decoder" -version = "0.3.1" +version = "0.1.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5d4a7da358eff58addd2877a45865158f0d78c911d43a5784ceb7bbf52833b0" +checksum = "229d53d58899083193af11e15917b5640cd40b29ff475a1fe4ef725deb02d0f2" +dependencies = [ + "rayon", +] [[package]] name = "js-sys" @@ -5308,21 +5187,11 @@ dependencies = [ [[package]] name = "kurbo" -version = "0.9.5" +version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd85a5776cd9500c2e2059c8c76c3b01528566b7fcbaf8098b55a33fc298849b" +checksum = "7a53776d271cfb873b17c618af0298445c88afc52837f3e948fa3fafd131f449" dependencies = [ - "arrayvec", -] - -[[package]] -name = "kurbo" -version = "0.10.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1618d4ebd923e97d67e7cd363d80aef35fe961005cbbbb3d2dad8bdd1bc63440" -dependencies = [ - "arrayvec", - "smallvec", + "arrayvec 0.7.4", ] [[package]] @@ -5523,29 +5392,12 @@ version = "0.2.5" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" -[[package]] -name = "lebe" -version = "0.5.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8" - [[package]] name = "libc" version = "0.2.153" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c198f91728a82281a64e1f4f9eeb25d82cb32a5de251c6bd1b5154d63a8e7bd" -[[package]] -name = "libfuzzer-sys" -version = "0.4.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a96cfd5557eb82f2b83fed4955246c988d331975a002961b07c81584d107e7f7" -dependencies = [ - "arbitrary", - "cc", - "once_cell", -] - [[package]] name = "libgit2-sys" version = "0.14.2+1.5.1" @@ -5727,15 +5579,6 @@ dependencies = [ "value-bag", ] -[[package]] -name = "loop9" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0fae87c125b03c1d2c0150c90365d7d6bcc53fb73a9acaef207d2d065860f062" -dependencies = [ - "imgref", -] - [[package]] name = "lsp" version = "0.1.0" @@ -5848,6 +5691,12 @@ dependencies = [ "regex-automata 0.1.10", ] +[[package]] +name = "matches" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2532096657941c2fea9c289d370a250971c689d4f143798ff67113ec042024a5" + [[package]] name = "matchit" version = "0.7.3" @@ -5860,16 +5709,6 @@ version = "0.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" -[[package]] -name = "maybe-rayon" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ea1f30cedd69f0a2954655f7188c6a834246d2bcf1e315e2ac40c4b24dc9519" -dependencies = [ - "cfg-if", - "rayon", -] - [[package]] name = "md-5" version = "0.10.5" @@ -5906,6 +5745,15 @@ dependencies = [ "rustix 0.38.32", ] +[[package]] +name = "memmap2" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "723e3ebdcdc5c023db1df315364573789f8857c11b631a2fdfad7c00f5c046b4" +dependencies = [ + "libc", +] + [[package]] name = "memmap2" version = "0.8.0" @@ -5977,6 +5825,25 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" +[[package]] +name = "miniz_oxide" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "791daaae1ed6889560f8c4359194f56648355540573244a5448a83ba1ecc7435" +dependencies = [ + "adler32", +] + +[[package]] +name = "miniz_oxide" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a92518e98c078586bc6c934028adcca4c92a53d6a958196de835170a01d84e4b" +dependencies = [ + "adler", + "autocfg", +] + [[package]] name = "miniz_oxide" version = "0.7.1" @@ -5984,7 +5851,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" dependencies = [ "adler", - "simd-adler32", ] [[package]] @@ -6182,12 +6048,6 @@ dependencies = [ "minimal-lexical", ] -[[package]] -name = "noop_proc_macro" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0676bb32a98c1a483ce53e500a81ad9c3d5b3f7c920c28c24e9cb0980d0b5bc8" - [[package]] name = "notifications" version = "0.1.0" @@ -6253,7 +6113,7 @@ dependencies = [ "num-complex", "num-integer", "num-iter", - "num-rational", + "num-rational 0.4.1", "num-traits", ] @@ -6323,17 +6183,6 @@ dependencies = [ "syn 1.0.109", ] -[[package]] -name = "num-derive" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed3955f1a9c7c0c15e092f9c887db08b1fc683305fdf6eb6684f22555355e202" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.48", -] - [[package]] name = "num-integer" version = "0.1.45" @@ -6355,6 +6204,17 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-rational" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12ac428b1cb17fce6f731001d307d351ec70a6d202fc2e60f7d4c5e42d8f4f07" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + [[package]] name = "num-rational" version = "0.4.1" @@ -6483,7 +6343,7 @@ dependencies = [ "jni 0.20.0", "ndk", "ndk-context", - "num-derive 0.3.3", + "num-derive", "num-traits", "oboe-sys", ] @@ -6893,7 +6753,7 @@ version = "0.11.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "90fcb95eef784c2ac79119d1dd819e162b5da872ce6f3c3abe1e8ca1c082f72b" dependencies = [ - "siphasher", + "siphasher 0.3.11", ] [[package]] @@ -6914,9 +6774,9 @@ dependencies = [ [[package]] name = "pico-args" -version = "0.5.0" +version = "0.4.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5be167a7af36ee22fe3115051bc51f6e6c7054c9348e28deb4f49bd6f705a315" +checksum = "db8bcd96cb740d03149cbad5518db9fd87126a10ab519c011893b1754134c468" [[package]] name = "pin-project" @@ -7014,15 +6874,14 @@ dependencies = [ [[package]] name = "png" -version = "0.17.13" +version = "0.16.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06e4b0d3d1312775e782c86c91a111aa1f910cbb65e1337f9975b5f9a554b5e1" +checksum = "3c3287920cb847dee3de33d301c463fba14dda99db24214ddf93f83d3021f4c6" dependencies = [ "bitflags 1.3.2", "crc32fast", - "fdeflate", - "flate2", - "miniz_oxide", + "deflate", + "miniz_oxide 0.3.7", ] [[package]] @@ -7414,21 +7273,6 @@ dependencies = [ "unicase", ] -[[package]] -name = "qoi" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f6d64c71eb498fe9eae14ce4ec935c555749aef511cca85b5568910d6e48001" -dependencies = [ - "bytemuck", -] - -[[package]] -name = "quick-error" -version = "2.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a993555f31e5a609f617c12db6250dedcac1b0a85076912c436e6fc9b2c8e6a3" - [[package]] name = "quick-xml" version = "0.30.0" @@ -7552,56 +7396,6 @@ version = "1.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "977b1e897f9d764566891689e642653e5ed90c6895106acd005eb4c1d0203991" -[[package]] -name = "rav1e" -version = "0.7.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd87ce80a7665b1cce111f8a16c1f3929f6547ce91ade6addf4ec86a8dda5ce9" -dependencies = [ - "arbitrary", - "arg_enum_proc_macro", - "arrayvec", - "av1-grain", - "bitstream-io", - "built", - "cfg-if", - "interpolate_name", - "itertools 0.12.1", - "libc", - "libfuzzer-sys", - "log", - "maybe-rayon", - "new_debug_unreachable", - "noop_proc_macro", - "num-derive 0.4.2", - "num-traits", - "once_cell", - "paste", - "profiling", - "rand 0.8.5", - "rand_chacha 0.3.1", - "simd_helpers", - "system-deps", - "thiserror", - "v_frame", - "wasm-bindgen", -] - -[[package]] -name = "ravif" -version = "0.11.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc13288f5ab39e6d7c9d501759712e6969fcc9734220846fc9ed26cae2cc4234" -dependencies = [ - "avif-serialize", - "imgref", - "loop9", - "quick-error", - "rav1e", - "rayon", - "rgb", -] - [[package]] name = "raw-window-handle" version = "0.5.2" @@ -7646,6 +7440,12 @@ dependencies = [ "crossbeam-utils", ] +[[package]] +name = "rctree" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be9e29cb19c8fe84169fcb07f8f11e66bc9e6e0280efd4715c54818296f8a4a8" + [[package]] name = "read-fonts" version = "0.15.3" @@ -7845,17 +7645,16 @@ dependencies = [ [[package]] name = "resvg" -version = "0.40.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "024e40e1ba7313fc315b1720298988c0cd6f8bfe3754b52838aafecebd11355a" +checksum = "09697862c5c3f940cbaffef91969c62188b5c8ed385b0aef43a5ff01ddc8000f" dependencies = [ - "gif 0.12.0", "jpeg-decoder", "log", "pico-args", "png", "rgb", - "svgtypes", + "svgfilters", "tiny-skia", "usvg", ] @@ -7986,7 +7785,7 @@ dependencies = [ name = "rope" version = "0.1.0" dependencies = [ - "arrayvec", + "arrayvec 0.7.4", "bromberg_sl2", "gpui", "log", @@ -7996,6 +7795,15 @@ dependencies = [ "util", ] +[[package]] +name = "roxmltree" +version = "0.14.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "921904a62e410e37e215c40381b7117f830d9d89ba60ab5236170541dd25646b" +dependencies = [ + "xmlparser", +] + [[package]] name = "roxmltree" version = "0.19.0" @@ -8110,7 +7918,7 @@ version = "1.32.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c4216490d5a413bc6d10fa4742bd7d4955941d062c0ef873141d6b0e7b30fd" dependencies = [ - "arrayvec", + "arrayvec 0.7.4", "borsh", "bytes 1.5.0", "num-traits", @@ -8230,6 +8038,22 @@ version = "1.0.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7ffc183a10b4478d04cbbbfc96d0873219d962dd5accaff2ffbd4ceb7df837f4" +[[package]] +name = "rustybuzz" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0ab463a295d00f3692e0974a0bfd83c7a9bcd119e27e07c2beecdb1b44a09d10" +dependencies = [ + "bitflags 1.3.2", + "bytemuck", + "smallvec", + "ttf-parser 0.9.0", + "unicode-bidi-mirroring", + "unicode-ccc", + "unicode-general-category", + "unicode-script", +] + [[package]] name = "rustybuzz" version = "0.12.1" @@ -8240,7 +8064,7 @@ dependencies = [ "bytemuck", "libm", "smallvec", - "ttf-parser", + "ttf-parser 0.20.0", "unicode-bidi-mirroring", "unicode-ccc", "unicode-properties", @@ -8253,6 +8077,15 @@ version = "1.0.15" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1ad4cc8da4ef723ed60bced201181d83791ad433213d8c24efffda1eec85d741" +[[package]] +name = "safe_arch" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c1ff3d6d9696af502cc3110dacce942840fb06ff4514cad92236ecc455f2ce05" +dependencies = [ + "bytemuck", +] + [[package]] name = "safemem" version = "0.3.3" @@ -8317,6 +8150,12 @@ version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" +[[package]] +name = "scoped_threadpool" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d51f5df5af43ab3f1360b429fa5e0152ac5ce8c0bd6485cae490332e96846a8" + [[package]] name = "scopeguard" version = "1.2.0" @@ -8796,21 +8635,6 @@ dependencies = [ "rand_core 0.6.4", ] -[[package]] -name = "simd-adler32" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d66dc143e6b11c1eddc06d5c423cfc97062865baf299914ab64caa38182078fe" - -[[package]] -name = "simd_helpers" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95890f873bec569a0362c235787f3aca6e1e887302ba4840839bcc6459c42da6" -dependencies = [ - "quote", -] - [[package]] name = "simdutf8" version = "0.1.4" @@ -8855,6 +8679,12 @@ dependencies = [ "termcolor", ] +[[package]] +name = "siphasher" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0b8de496cf83d4ed58b6be86c3a275b8602f6ffe98d3024a869e124147a9a3ac" + [[package]] name = "siphasher" version = "0.3.11" @@ -9346,15 +9176,6 @@ dependencies = [ "ui", ] -[[package]] -name = "strict-num" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6637bab7722d379c8b41ba849228d680cc12d0a45ba1fa2b48f2a30577a06731" -dependencies = [ - "float-cmp", -] - [[package]] name = "stringprep" version = "0.1.4" @@ -9414,7 +9235,7 @@ checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc" name = "sum_tree" version = "0.1.0" dependencies = [ - "arrayvec", + "arrayvec 0.7.4", "ctor", "env_logger", "log", @@ -9497,13 +9318,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8fb1df15f412ee2e9dfc1c504260fa695c1c3f10fe9f4a6ee2d2184d7d6450e2" [[package]] -name = "svgtypes" -version = "0.14.0" +name = "svgfilters" +version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "59d7618f12b51be8171a7cfdda1e7a93f79cbc57c4e7adf89a749cf671125241" +checksum = "fb0dce2fee79ac40c21dafba48565ff7a5fa275e23ffe9ce047a40c9574ba34e" dependencies = [ - "kurbo 0.10.4", - "siphasher", + "float-cmp", + "rgb", +] + +[[package]] +name = "svgtypes" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c536faaff1a10837cfe373142583f6e27d81e96beba339147e77b67c9f260ff" +dependencies = [ + "float-cmp", + "siphasher 0.2.3", ] [[package]] @@ -9569,19 +9400,6 @@ dependencies = [ "windows 0.52.0", ] -[[package]] -name = "system-deps" -version = "6.2.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a3e535eb8dded36d55ec13eddacd30dec501792ff23a0b1682c38601b8cf2349" -dependencies = [ - "cfg-expr", - "heck 0.5.0", - "pkg-config", - "toml 0.8.10", - "version-compare", -] - [[package]] name = "system-interface" version = "0.27.1" @@ -9626,7 +9444,7 @@ name = "taffy" version = "0.3.11" source = "git+https://github.com/DioxusLabs/taffy?rev=1876f72bee5e376023eaa518aa7b8a34c769bd1b#1876f72bee5e376023eaa518aa7b8a34c769bd1b" dependencies = [ - "arrayvec", + "arrayvec 0.7.4", "grid", "num-traits", "slotmap", @@ -9913,12 +9731,12 @@ dependencies = [ [[package]] name = "tiff" -version = "0.9.1" +version = "0.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba1310fcea54c6a9a4fd1aad794ecc02c31682f6bfbecdf460bf19533eed1e3e" +checksum = "9a53f4706d65497df0c4349241deddf35f84cee19c87ed86ea8ca590f4464437" dependencies = [ - "flate2", "jpeg-decoder", + "miniz_oxide 0.4.4", "weezl", ] @@ -9977,28 +9795,16 @@ dependencies = [ [[package]] name = "tiny-skia" -version = "0.11.4" +version = "0.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83d13394d44dae3207b52a326c0c85a8bf87f1541f23b0d143811088497b09ab" +checksum = "1bf81f2900d2e235220e6f31ec9f63ade6a7f59090c556d74fe949bb3b15e9fe" dependencies = [ "arrayref", - "arrayvec", + "arrayvec 0.5.2", "bytemuck", "cfg-if", - "log", "png", - "tiny-skia-path", -] - -[[package]] -name = "tiny-skia-path" -version = "0.11.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9c9e7fc0c2e86a30b117d0462aa261b72b7a99b7ebd7deb3a14ceda95c5bdc93" -dependencies = [ - "arrayref", - "bytemuck", - "strict-num", + "safe_arch", ] [[package]] @@ -10680,6 +10486,18 @@ version = "0.2.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3528ecfd12c466c6f163363caf2d02a71161dd5e1cc6ae7b34207ea2d42d81ed" +[[package]] +name = "ttf-parser" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62ddb402ac6c2af6f7a2844243887631c4e94b51585b229fcfddb43958cd55ca" + +[[package]] +name = "ttf-parser" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae2f58a822f08abdaf668897e96a5656fe72f5a9ce66422423e8849384872e6" + [[package]] name = "ttf-parser" version = "0.20.0" @@ -10785,6 +10603,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cc2520efa644f8268dce4dcd3050eaa7fc044fca03961e9998ac7e2e92b77cf1" +[[package]] +name = "unicode-general-category" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f9af028e052a610d99e066b33304625dea9613170a2563314490a4e6ec5cf7f" + [[package]] name = "unicode-ident" version = "1.0.12" @@ -10886,25 +10710,25 @@ checksum = "daf8dba3b7eb870caf1ddeed7bc9d2a049f3cfdfae7cb521b087cc33ae4c49da" [[package]] name = "usvg" -version = "0.40.0" +version = "0.14.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c04150a94f0bfc3b2c15d4e151524d14cd06765fc6641d8b1c59a248360d4474" +checksum = "ef8352f317d8f9a918ba5154797fb2a93e2730244041cf7d5be35148266adfa5" dependencies = [ - "base64 0.21.4", + "base64 0.13.1", "data-url", "flate2", - "fontdb", - "imagesize", - "kurbo 0.9.5", + "fontdb 0.5.4", + "kurbo", "log", + "memmap2 0.2.3", "pico-args", - "roxmltree", - "rustybuzz", + "rctree", + "roxmltree 0.14.1", + "rustybuzz 0.3.0", "simplecss", - "siphasher", - "strict-num", + "siphasher 0.2.3", "svgtypes", - "tiny-skia-path", + "ttf-parser 0.12.3", "unicode-bidi", "unicode-script", "unicode-vo", @@ -10961,17 +10785,6 @@ dependencies = [ "sha1_smol", ] -[[package]] -name = "v_frame" -version = "0.3.8" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d6f32aaa24bacd11e488aa9ba66369c7cd514885742c9fe08cfe85884db3e92b" -dependencies = [ - "aligned-vec", - "num-traits", - "wasm-bindgen", -] - [[package]] name = "valuable" version = "0.1.0" @@ -11034,12 +10847,6 @@ dependencies = [ "workspace", ] -[[package]] -name = "version-compare" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "852e951cb7832cb45cb1169900d19760cfa39b82bc0ea9c0e5a14ae88411c98b" - [[package]] name = "version_check" version = "0.9.4" @@ -12847,30 +12654,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "zune-core" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3f423a2c17029964870cfaabb1f13dfab7d092a62a29a89264f4d36990ca414a" - -[[package]] -name = "zune-inflate" -version = "0.2.54" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73ab332fe2f6680068f3582b16a24f90ad7096d5d39b974d1c0aff0125116f02" -dependencies = [ - "simd-adler32", -] - -[[package]] -name = "zune-jpeg" -version = "0.4.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ec866b44a2a1fd6133d363f073ca1b179f438f99e7e5bfb1e33f7181facfe448" -dependencies = [ - "zune-core", -] - [[package]] name = "zvariant" version = "4.0.2" diff --git a/crates/gpui/Cargo.toml b/crates/gpui/Cargo.toml index d27f9a353d..3ae61d1d29 100644 --- a/crates/gpui/Cargo.toml +++ b/crates/gpui/Cargo.toml @@ -40,7 +40,7 @@ etagere = "0.2" futures.workspace = true font-kit = { git = "https://github.com/zed-industries/font-kit", rev = "5a5c4d4" } gpui_macros.workspace = true -image = "0.25" +image = "0.23" itertools.workspace = true lazy_static.workspace = true linkme = "0.3" @@ -54,7 +54,9 @@ profiling.workspace = true rand.workspace = true raw-window-handle = "0.6" refineable.workspace = true -resvg = "0.40" +resvg = "0.14" +tiny-skia = "0.5" +usvg = { version = "0.14", features = [] } schemars.workspace = true seahash = "4.1" semantic_version.workspace = true diff --git a/crates/gpui/src/assets.rs b/crates/gpui/src/assets.rs index b6c021ba38..987c964725 100644 --- a/crates/gpui/src/assets.rs +++ b/crates/gpui/src/assets.rs @@ -1,6 +1,6 @@ use crate::{size, DevicePixels, Result, SharedString, Size}; use anyhow::anyhow; -use image::RgbaImage; +use image::{Bgra, ImageBuffer}; use std::{ borrow::Cow, fmt, @@ -43,12 +43,12 @@ pub(crate) struct RenderImageParams { pub struct ImageData { /// The ID associated with this image pub id: ImageId, - data: RgbaImage, + data: ImageBuffer, Vec>, } impl ImageData { /// Create a new image from the given data. - pub fn new(data: RgbaImage) -> Self { + pub fn new(data: ImageBuffer, Vec>) -> Self { static NEXT_ID: AtomicUsize = AtomicUsize::new(0); Self { diff --git a/crates/gpui/src/elements/img.rs b/crates/gpui/src/elements/img.rs index e02146e29c..fec2df7092 100644 --- a/crates/gpui/src/elements/img.rs +++ b/crates/gpui/src/elements/img.rs @@ -330,7 +330,7 @@ impl Asset for Image { }; let data = if let Ok(format) = image::guess_format(&bytes) { - let data = image::load_from_memory_with_format(&bytes, format)?.into_rgba8(); + let data = image::load_from_memory_with_format(&bytes, format)?.into_bgra8(); ImageData::new(data) } else { let pixmap = @@ -369,7 +369,7 @@ pub enum ImageCacheError { Image(Arc), /// An error that occurred while processing an SVG. #[error("svg error: {0}")] - Usvg(Arc), + Usvg(Arc), } impl From for ImageCacheError { @@ -384,8 +384,8 @@ impl From for ImageCacheError { } } -impl From for ImageCacheError { - fn from(error: resvg::usvg::Error) -> Self { +impl From for ImageCacheError { + fn from(error: usvg::Error) -> Self { Self::Usvg(Arc::new(error)) } } diff --git a/crates/gpui/src/platform/mac/metal_atlas.rs b/crates/gpui/src/platform/mac/metal_atlas.rs index ca03e08c12..7c23fafcba 100644 --- a/crates/gpui/src/platform/mac/metal_atlas.rs +++ b/crates/gpui/src/platform/mac/metal_atlas.rs @@ -115,7 +115,7 @@ impl MetalAtlasState { usage = metal::MTLTextureUsage::ShaderRead; } AtlasTextureKind::Polychrome => { - pixel_format = metal::MTLPixelFormat::RGBA8Unorm; + pixel_format = metal::MTLPixelFormat::BGRA8Unorm; usage = metal::MTLTextureUsage::ShaderRead; } AtlasTextureKind::Path => { diff --git a/crates/gpui/src/platform/mac/metal_renderer.rs b/crates/gpui/src/platform/mac/metal_renderer.rs index 28a8b86c70..b4c6f1f6b2 100644 --- a/crates/gpui/src/platform/mac/metal_renderer.rs +++ b/crates/gpui/src/platform/mac/metal_renderer.rs @@ -72,7 +72,7 @@ impl MetalRenderer { let layer = metal::MetalLayer::new(); layer.set_device(&device); - layer.set_pixel_format(MTLPixelFormat::RGBA8Unorm); + layer.set_pixel_format(MTLPixelFormat::BGRA8Unorm); layer.set_opaque(false); layer.set_maximum_drawable_count(3); unsafe { @@ -128,7 +128,7 @@ impl MetalRenderer { "path_sprites", "path_sprite_vertex", "path_sprite_fragment", - MTLPixelFormat::RGBA8Unorm, + MTLPixelFormat::BGRA8Unorm, ); let shadows_pipeline_state = build_pipeline_state( &device, @@ -136,7 +136,7 @@ impl MetalRenderer { "shadows", "shadow_vertex", "shadow_fragment", - MTLPixelFormat::RGBA8Unorm, + MTLPixelFormat::BGRA8Unorm, ); let quads_pipeline_state = build_pipeline_state( &device, @@ -144,7 +144,7 @@ impl MetalRenderer { "quads", "quad_vertex", "quad_fragment", - MTLPixelFormat::RGBA8Unorm, + MTLPixelFormat::BGRA8Unorm, ); let underlines_pipeline_state = build_pipeline_state( &device, @@ -152,7 +152,7 @@ impl MetalRenderer { "underlines", "underline_vertex", "underline_fragment", - MTLPixelFormat::RGBA8Unorm, + MTLPixelFormat::BGRA8Unorm, ); let monochrome_sprites_pipeline_state = build_pipeline_state( &device, @@ -160,7 +160,7 @@ impl MetalRenderer { "monochrome_sprites", "monochrome_sprite_vertex", "monochrome_sprite_fragment", - MTLPixelFormat::RGBA8Unorm, + MTLPixelFormat::BGRA8Unorm, ); let polychrome_sprites_pipeline_state = build_pipeline_state( &device, @@ -168,7 +168,7 @@ impl MetalRenderer { "polychrome_sprites", "polychrome_sprite_vertex", "polychrome_sprite_fragment", - MTLPixelFormat::RGBA8Unorm, + MTLPixelFormat::BGRA8Unorm, ); let surfaces_pipeline_state = build_pipeline_state( &device, @@ -176,7 +176,7 @@ impl MetalRenderer { "surfaces", "surface_vertex", "surface_fragment", - MTLPixelFormat::RGBA8Unorm, + MTLPixelFormat::BGRA8Unorm, ); let command_queue = device.new_command_queue(); diff --git a/crates/gpui/src/platform/mac/text_system.rs b/crates/gpui/src/platform/mac/text_system.rs index 775359fd53..d5bb723012 100644 --- a/crates/gpui/src/platform/mac/text_system.rs +++ b/crates/gpui/src/platform/mac/text_system.rs @@ -425,8 +425,9 @@ impl MacTextSystemState { ); if params.is_emoji { - // Convert from RGBA with premultiplied alpha to RGBA with straight alpha. + // Convert from RGBA with premultiplied alpha to BGRA with straight alpha. for pixel in bytes.chunks_exact_mut(4) { + pixel.swap(0, 2); let a = pixel[3] as f32 / 255.; pixel[0] = (pixel[0] as f32 / a) as u8; pixel[1] = (pixel[1] as f32 / a) as u8; diff --git a/crates/gpui/src/svg_renderer.rs b/crates/gpui/src/svg_renderer.rs index af4f7651ae..a4060fbccf 100644 --- a/crates/gpui/src/svg_renderer.rs +++ b/crates/gpui/src/svg_renderer.rs @@ -1,10 +1,7 @@ use crate::{AssetSource, DevicePixels, IsZero, Result, SharedString, Size}; use anyhow::anyhow; -use resvg::tiny_skia::Pixmap; -use std::{ - hash::Hash, - sync::{Arc, OnceLock}, -}; +use std::{hash::Hash, sync::Arc}; +use tiny_skia::Pixmap; #[derive(Clone, PartialEq, Hash, Eq)] pub(crate) struct RenderSvgParams { @@ -46,40 +43,28 @@ impl SvgRenderer { Ok(alpha_mask) } - pub fn render_pixmap(&self, bytes: &[u8], size: SvgSize) -> Result { - let tree = - resvg::usvg::Tree::from_data(&bytes, &resvg::usvg::Options::default(), svg_fontdb())?; + pub fn render_pixmap(&self, bytes: &[u8], size: SvgSize) -> Result { + let tree = usvg::Tree::from_data(&bytes, &usvg::Options::default())?; + + let tree_size = tree.svg_node().size; let size = match size { SvgSize::Size(size) => size, SvgSize::ScaleFactor(scale) => crate::size( - DevicePixels((tree.size().width() * scale) as i32), - DevicePixels((tree.size().height() * scale) as i32), + DevicePixels((tree_size.width() * scale as f64) as i32), + DevicePixels((tree_size.height() * scale as f64) as i32), ), }; // Render the SVG to a pixmap with the specified width and height. - let mut pixmap = - resvg::tiny_skia::Pixmap::new(size.width.into(), size.height.into()).unwrap(); - - let ratio = size.width.0 as f32 / tree.size().width(); + let mut pixmap = tiny_skia::Pixmap::new(size.width.into(), size.height.into()).unwrap(); resvg::render( &tree, - resvg::tiny_skia::Transform::from_scale(ratio, ratio), - &mut pixmap.as_mut(), + usvg::FitTo::Width(size.width.into()), + pixmap.as_mut(), ); Ok(pixmap) } } - -/// Returns the global font database used for SVG rendering. -pub(crate) fn svg_fontdb() -> &'static resvg::usvg::fontdb::Database { - static FONTDB: OnceLock = OnceLock::new(); - FONTDB.get_or_init(|| { - let mut fontdb = resvg::usvg::fontdb::Database::new(); - fontdb.load_system_fonts(); - fontdb - }) -} diff --git a/crates/media/src/media.rs b/crates/media/src/media.rs index 8a71e28079..8757249c31 100644 --- a/crates/media/src/media.rs +++ b/crates/media/src/media.rs @@ -36,7 +36,7 @@ pub mod core_video { use super::*; pub use crate::bindings::{ - kCVPixelFormatType_420YpCbCr8BiPlanarFullRange, + kCVPixelFormatType_32BGRA, kCVPixelFormatType_420YpCbCr8BiPlanarFullRange, kCVPixelFormatType_420YpCbCr8BiPlanarVideoRange, kCVPixelFormatType_420YpCbCr8Planar, }; use crate::bindings::{kCVReturnSuccess, CVReturn, OSType};