diff --git a/COMPILING.md b/COMPILING.md index 747bd94930b22e5411a06e33bdcc373cd700f142..bee2551809e43ea9d3695285b0a01f73f2127b44 100644 --- a/COMPILING.md +++ b/COMPILING.md @@ -31,7 +31,7 @@ minimum version is listed here; you may use a newer version instead. **Compilers:** * a C compiler and `make` tool; we recommend GNU `make`. -* rust 1.58 or later +* rust 1.63 or later * cargo **Mandatory dependencies:** diff --git a/Cargo.lock b/Cargo.lock index 4b7da7184e43a48e2a34a1ba9f9da1bc42277f9c..5bb6b619c22449428f4a8a8fbbff156018983fd0 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -28,9 +28,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.65" +version = "1.0.66" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "98161a4e3e2184da77bb14f02184cdd111e83bbbcc9979dfee3c44b9a85f5602" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" [[package]] name = "approx" @@ -43,9 +43,9 @@ dependencies = [ [[package]] name = "assert_cmd" -version = "2.0.4" +version = "2.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "93ae1ddd39efd67689deb1979d80bad3bf7f2b09c6e6117c8d1f2443b5e2f83e" +checksum = "d5c2ca00549910ec251e3bd15f87aeeb206c9456b9a77b43ff6c97c54042a472" dependencies = [ "bstr", "doc-comment", @@ -119,9 +119,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.11.0" +version = "3.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1ad822118d20d2c234f427000d5acc36eabe1e29a348c89b63dd60b13f28e5d" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" [[package]] name = "bytemuck" @@ -137,22 +137,23 @@ checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" [[package]] name = "cairo-rs" -version = "0.15.12" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c76ee391b03d35510d9fa917357c7f1855bd9a6659c95a1b392e33f49b3369bc" +checksum = "08f9ee4a4ca9239c9a839453dce04b7ddee2f859ec4cd7acd1f5703b68db549c" dependencies = [ "bitflags", "cairo-sys-rs", "glib", "libc", + "once_cell", "thiserror", ] [[package]] name = "cairo-sys-rs" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c55d429bef56ac9172d25fecb85dc8068307d17acd74b377866b7a1ef25d3c8" +checksum = "5119ea655ec777b523f0b57279e70f8a4542f61b0e98a48f892b4ef043fd4c5d" dependencies = [ "glib-sys", "libc", @@ -165,6 +166,12 @@ version = "0.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + [[package]] name = "cfg-expr" version = "0.11.0" @@ -231,9 +238,9 @@ checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" dependencies = [ "heck", "proc-macro-error", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -245,6 +252,16 @@ dependencies = [ "os_str_bytes", ] +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + [[package]] name = "const-cstr" version = "0.3.0" @@ -337,26 +354,24 @@ dependencies = [ [[package]] name = "crossbeam-epoch" -version = "0.9.10" +version = "0.9.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "045ebe27666471bb549370b4b0b3e51b07f56325befa4284db65fc89c02511b1" +checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" dependencies = [ "autocfg", "cfg-if", "crossbeam-utils", "memoffset", - "once_cell", "scopeguard", ] [[package]] name = "crossbeam-utils" -version = "0.8.11" +version = "0.8.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "51887d4adc7b564537b15adcfb307936f8075dfcd5f00dde9a9f1d29383682bc" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" dependencies = [ "cfg-if", - "once_cell", ] [[package]] @@ -370,10 +385,10 @@ dependencies = [ "itoa 0.4.8", "matches", "phf", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", "smallvec", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -383,7 +398,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" dependencies = [ "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -408,6 +423,50 @@ dependencies = [ "memchr", ] +[[package]] +name = "cxx" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f83d0ebf42c6eafb8d7c52f7e5f2d3003b89c7aa4fd2b79229209459a849af8" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07d050484b55975889284352b0ffc2ecbda25c0c55978017c132b29ba0818a86" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2 1.0.47", + "quote 1.0.21", + "scratch", + "syn 1.0.103", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d2199b00553eda8012dfec8d3b1c75fce747cf27c169a270b3b99e3448ab78" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb67a6de1f602736dd7eaead0080cf3435df806c61b24b13328db128c58868f" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.103", +] + [[package]] name = "data-url" version = "0.1.1" @@ -424,10 +483,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" dependencies = [ "convert_case", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", "rustc_version 0.4.0", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -588,24 +647,24 @@ dependencies = [ [[package]] name = "futures-channel" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30bdd20c28fadd505d0fd6712cdfcb0d4b5648baf45faef7f852afb2399bb050" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" dependencies = [ "futures-core", ] [[package]] name = "futures-core" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4e5aa3de05362c3fb88de6531e6296e85cde7739cccad4b9dfeeb7f6ebce56bf" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" [[package]] name = "futures-executor" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9ff63c23854bee61b6e9cd331d523909f238fc7636290b96826e9cfa5faa00ab" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" dependencies = [ "futures-core", "futures-task", @@ -614,23 +673,35 @@ dependencies = [ [[package]] name = "futures-io" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbf4d2a7a308fd4578637c0b17c7e1c7ba127b8f6ba00b29f717e9655d85eb68" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2 1.0.47", + "quote 1.0.21", + "syn 1.0.103", +] [[package]] name = "futures-task" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a6508c467c73851293f390476d4491cf4d227dbabcd4170f3bb6044959b294f1" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" [[package]] name = "futures-util" -version = "0.3.24" +version = "0.3.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44fb6cb1be61cc1d2e43b262516aafcf63b241cffdb1d3fa115f91d9c7b09c90" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" dependencies = [ "futures-core", + "futures-macro", "futures-task", "pin-project-lite", "pin-utils", @@ -648,9 +719,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf" -version = "0.15.11" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ad38dd9cc8b099cceecdf41375bb6d481b1b5a7cd5cd603e10a69a9383f8619a" +checksum = "c0fb526c8c3a075eda15f961820edf3e15fe18576ac4fbabbb324e4cc6c421e6" dependencies = [ "bitflags", "gdk-pixbuf-sys", @@ -661,9 +732,9 @@ dependencies = [ [[package]] name = "gdk-pixbuf-sys" -version = "0.15.10" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "140b2f5378256527150350a8346dbdb08fadc13453a7a2d73aecd5fab3c402a7" +checksum = "7df12d15c10c3c5a84d9fb4ba0e27659f6a2bdee4f27f8b17126da15d5ddd3f2" dependencies = [ "gio-sys", "glib-sys", @@ -685,9 +756,9 @@ dependencies = [ [[package]] name = "getrandom" -version = "0.2.7" +version = "0.2.8" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4eb1a864a501629691edf6c15a593b7a51eebaa1e8468e9ddc623de7c9b58ec6" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" dependencies = [ "cfg-if", "libc", @@ -696,26 +767,29 @@ dependencies = [ [[package]] name = "gio" -version = "0.15.12" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "68fdbc90312d462781a395f7a16d96a2b379bb6ef8cd6310a2df272771c4283b" +checksum = "3025f17aab38ebbb40d785806cf36c292c4dd6755b05584fc52d34fb87533263" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-io", + "futures-util", "gio-sys", "glib", "libc", "once_cell", + "pin-project-lite", + "smallvec", "thiserror", ] [[package]] name = "gio-sys" -version = "0.15.10" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "32157a475271e2c4a023382e9cab31c4584ee30a97da41d3c4e9fdd605abcf8d" +checksum = "6da1bba9d3f2ab13a6e9932c40f240dc99ebc9f0bdc35cfb130d1a3df36f374c" dependencies = [ "glib-sys", "gobject-sys", @@ -726,15 +800,17 @@ dependencies = [ [[package]] name = "glib" -version = "0.15.12" +version = "0.16.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "edb0306fbad0ab5428b0ca674a23893db909a98582969c9b537be4ced78c505d" +checksum = "079d580b26ee5eb504942bd4340a1218323a4cf19a31d776d62cd3a2a8416622" dependencies = [ "bitflags", "futures-channel", "futures-core", "futures-executor", "futures-task", + "futures-util", + "gio-sys", "glib-macros", "glib-sys", "gobject-sys", @@ -746,24 +822,24 @@ dependencies = [ [[package]] name = "glib-macros" -version = "0.15.11" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "25a68131a662b04931e71891fb14aaf65ee4b44d08e8abc10f49e77418c86c64" +checksum = "e195c1311fa6b04d7b896ea39385f6bd60ef5d25bf74a7c11c8c3f94f6c1a572" dependencies = [ "anyhow", "heck", "proc-macro-crate", "proc-macro-error", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] name = "glib-sys" -version = "0.15.10" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef4b192f8e65e9cf76cbf4ea71fa8e3be4a0e18ffe3d68b8da6836974cc5bad4" +checksum = "b33357bb421a77bd849f6a0bfcaf3b4b256a2577802971bb5dd522d530f27021" dependencies = [ "libc", "system-deps", @@ -777,9 +853,9 @@ checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" [[package]] name = "gobject-sys" -version = "0.15.10" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0d57ce44246becd17153bd035ab4d32cfee096a657fc01f2231c9278378d1e0a" +checksum = "63ca11a57400f3d4fda594e002844be47900c9fb8b29e2155c6e37a1f24e51b3" dependencies = [ "glib-sys", "libc", @@ -815,18 +891,28 @@ dependencies = [ [[package]] name = "iana-time-zone" -version = "0.1.48" +version = "0.1.51" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "237a0714f28b1ee39ccec0770ccb544eb02c9ef2c82bb096230eefcffa6468b0" +checksum = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed" dependencies = [ "android_system_properties", "core-foundation-sys", + "iana-time-zone-haiku", "js-sys", - "once_cell", "wasm-bindgen", "winapi", ] +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + [[package]] name = "idna" version = "0.3.0" @@ -858,9 +944,9 @@ dependencies = [ [[package]] name = "itertools" -version = "0.10.4" +version = "0.10.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d8bf247779e67a9082a4790b45e71ac7cfd1321331a5c856a74a9faebdab78d0" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" dependencies = [ "either", ] @@ -873,9 +959,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.3" +version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" +checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" [[package]] name = "js-sys" @@ -900,9 +986,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" [[package]] name = "libc" -version = "0.2.133" +version = "0.2.135" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0f80d65747a3e43d1596c7c5492d95d5edddaabd45a7fcdb02b95f644164966" +checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" [[package]] name = "librsvg" @@ -955,6 +1041,15 @@ dependencies = [ "yeslogic-fontconfig-sys", ] +[[package]] +name = "link-cplusplus" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +dependencies = [ + "cc", +] + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -976,9 +1071,9 @@ dependencies = [ [[package]] name = "lock_api" -version = "0.4.8" +version = "0.4.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9f80bf5aacaf25cbfc8210d1cfb718f2bf3b11c4c54e5afe36c236853a8ec390" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" dependencies = [ "autocfg", "scopeguard", @@ -1107,9 +1202,9 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -1210,9 +1305,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2f7254b99e31cad77da24b08ebf628882739a608578bb1bcdfc1f9c21260d7c0" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" [[package]] name = "oorandom" @@ -1228,11 +1323,12 @@ checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" [[package]] name = "pango" -version = "0.15.10" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e4045548659aee5313bde6c582b0d83a627b7904dd20dc2d9ef0895d414e4f" +checksum = "7208c60f224cf6e44c551df5ee2ef38f9da0fd29d7c5a0402000b8ab0520e798" dependencies = [ "bitflags", + "gio", "glib", "libc", "once_cell", @@ -1241,9 +1337,9 @@ dependencies = [ [[package]] name = "pango-sys" -version = "0.15.10" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2a00081cde4661982ed91d80ef437c20eacaf6aa1a5962c0279ae194662c3aa" +checksum = "922441c228366ed98d3534b87bc7c987c50564094c3abbc3513717786419252d" dependencies = [ "glib-sys", "gobject-sys", @@ -1253,9 +1349,9 @@ dependencies = [ [[package]] name = "pangocairo" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7876a45c1f1d1a75a2601dc6d9ef2cb5a8be0e3d76f909d82450759929035366" +checksum = "a726760a29e5e17d965d5d7573548e385ae9ce99cb7adcf70d75d4627f23fc7a" dependencies = [ "bitflags", "cairo-rs", @@ -1267,9 +1363,9 @@ dependencies = [ [[package]] name = "pangocairo-sys" -version = "0.15.1" +version = "0.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "78cf746594916c81d5f739af9335c5f55a1f4606d80b3e1d821f18cf95a29494" +checksum = "b8281198ea4596bdc6e22b0d3565471c9456d7125e423a785f866640c18b57ec" dependencies = [ "cairo-sys-rs", "glib-sys", @@ -1363,9 +1459,9 @@ dependencies = [ "phf_generator 0.8.0", "phf_shared 0.8.0", "proc-macro-hack", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -1510,9 +1606,9 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" dependencies = [ "proc-macro-error-attr", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", "version_check", ] @@ -1522,7 +1618,7 @@ version = "1.0.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", "version_check", ] @@ -1544,9 +1640,9 @@ dependencies = [ [[package]] name = "proc-macro2" -version = "1.0.43" +version = "1.0.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" dependencies = [ "unicode-ident", ] @@ -1598,7 +1694,7 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", ] [[package]] @@ -1661,7 +1757,7 @@ version = "0.6.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" dependencies = [ - "getrandom 0.2.7", + "getrandom 0.2.8", ] [[package]] @@ -1837,6 +1933,12 @@ version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" +[[package]] +name = "scratch" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" + [[package]] name = "selectors" version = "0.23.0" @@ -1878,9 +1980,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" [[package]] name = "serde" -version = "1.0.144" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0f747710de3dcd43b88c9168773254e809d8ddbdf9653b84e2554ab219f17860" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" dependencies = [ "serde_derive", ] @@ -1897,22 +1999,22 @@ dependencies = [ [[package]] name = "serde_derive" -version = "1.0.144" +version = "1.0.145" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "94ed3a816fb1d101812f83e789f888322c34e291f894f19590dc310963e87a00" +checksum = "81fa1584d3d1bcacd84c277a0dfe21f5b0f6accf4a23d04d4c6d61f1af522b4c" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] name = "serde_json" -version = "1.0.85" +version = "1.0.87" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e55a28e3aaef9d5ce0506d0a14dbba8054ddc7e499ef522dd8b26859ec9d4a44" +checksum = "6ce777b7b150d76b9cf60d28b55f5847135a003f7d7350c6be7a773508ce7d45" dependencies = [ - "itoa 1.0.3", + "itoa 1.0.4", "ryu", "serde", ] @@ -1972,9 +2074,9 @@ dependencies = [ [[package]] name = "smallvec" -version = "1.9.0" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" [[package]] name = "stable_deref_trait" @@ -2011,11 +2113,11 @@ version = "0.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c87a60a40fccc84bef0652345bbbbbe20a605bf5d0ce81719fc476f5c03b50ef" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", "serde", "serde_derive", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -2025,13 +2127,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "58fa5ff6ad0d98d1ffa8cb115892b6e69d67799f6763e162a1c9db421dc22e11" dependencies = [ "base-x", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", "serde", "serde_derive", "serde_json", "sha1", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -2062,7 +2164,7 @@ checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" dependencies = [ "phf_generator 0.10.0", "phf_shared 0.10.0", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", ] @@ -2085,11 +2187,11 @@ dependencies = [ [[package]] name = "syn" -version = "1.0.100" +version = "1.0.103" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "52205623b1b0f064a4e71182c3b18ae902267282930c6d5462c91b859668426e" +checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", "unicode-ident", ] @@ -2176,22 +2278,22 @@ checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" [[package]] name = "thiserror" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c53f98874615aea268107765aa1ed8f6116782501d18e53d08b471733bea6c85" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.35" +version = "1.0.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8b463991b4eab2d801e724172285ec4195c650e8ec79b149e6c2a8e6dd3f783" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -2237,10 +2339,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "fd3c141a1b43194f3f56a1411225df8646c55781d5f26db825b3d98507eb482f" dependencies = [ "proc-macro-hack", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", "standback", - "syn 1.0.100", + "syn 1.0.103", ] [[package]] @@ -2291,9 +2393,9 @@ checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" [[package]] name = "unicode-ident" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dcc811dc4066ac62f84f11307873c4850cb653bfa9b1719cee2bd2204a4bc5dd" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" [[package]] name = "unicode-normalization" @@ -2402,9 +2504,9 @@ dependencies = [ "bumpalo", "log", "once_cell", - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", "wasm-bindgen-shared", ] @@ -2424,9 +2526,9 @@ version = "0.2.83" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" dependencies = [ - "proc-macro2 1.0.43", + "proc-macro2 1.0.47", "quote 1.0.21", - "syn 1.0.100", + "syn 1.0.103", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2449,9 +2551,9 @@ dependencies = [ [[package]] name = "wide" -version = "0.7.4" +version = "0.7.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b3aba2d1dac31ac7cae82847ac5b8be822aee8f99a4e100f279605016b185c5f" +checksum = "ae41ecad2489a1655c8ef8489444b0b113c0a0c795944a3572a0931cf7d2525c" dependencies = [ "bytemuck", "safe_arch", diff --git a/Cargo.toml b/Cargo.toml index 474aa8f470b4406d19943887b987628fd55225f7..a89041e4a1c730bfe35b2d6f19f8fa5d427f7aac 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -9,7 +9,7 @@ homepage = "https://wiki.gnome.org/Projects/LibRsvg" repository = "https://gitlab.gnome.org/GNOME/librsvg/" build = "build.rs" edition = "2021" -rust-version = "1.58" +rust-version = "1.63" [package.metadata.system-deps] cairo-pdf = { version = "1.16", optional = true } @@ -48,7 +48,7 @@ crate-type = [ "staticlib", "rlib" ] # Keep these in sync with respect to the cairo-rs version: # src/lib.rs - toplevel example in the docs byteorder = "1.4" -cairo-rs = { version = "0.15", features=["v1_16", "png", "pdf", "ps", "svg"] } +cairo-rs = { version = "0.16", features=["v1_16", "png", "pdf", "ps", "svg"] } cast = "0.3.0" chrono = "0.4.0" # rsvg-convert clap = { version = "3.2.22", features = ["cargo", "derive"] } # rsvg-convert @@ -56,9 +56,9 @@ cssparser = "0.28.0" data-url = "0.1" encoding = "0.2.33" float-cmp = "0.9.0" -gdk-pixbuf = "0.15" -gio = { version = "0.15", features = ["v2_50"] } # per configure.ac -glib = { version = "0.15", features = ["v2_50"] } +gdk-pixbuf = "0.16" +gio = "0.16" +glib = "0.16" itertools = "0.10.3" language-tags = "0.3.1" libc = "0.2" @@ -67,8 +67,8 @@ markup5ever = "0.10" nalgebra = "0.30.1" num-traits = "0.2" once_cell = "1.2.0" -pango = { version = "0.15", features = ["v1_46"] } -pangocairo = "0.15" +pango = { version = "0.16", features = ["v1_46"] } +pangocairo = "0.16" rayon = "1" rctree = "0.4.0" regex = "1" @@ -82,16 +82,16 @@ xml5ever = "0.16.1" [dev-dependencies] anyhow = "1.0" assert_cmd = "2.0.2" -cairo-rs = { version = "0.15", features = ["png"] } +cairo-rs = { version = "0.16", features = ["png"] } cast = "0.3.0" chrono = "0.4.0" criterion = "0.3" -glib = "0.15" +glib = "0.16" libc = "0.2" lopdf = "0.26.0" matches = "0.1" -pango = "0.15" -pangocairo = "0.15" +pango = "0.16" +pangocairo = "0.16" png = "0.17.2" predicates = "2.0.0" proptest = "1.0.0" diff --git a/ci/build-with-coverage.sh b/ci/build-with-coverage.sh index 9d4dea7372b1c57806f75eaf259862ea0c1c9228..134c9fde1a13f07b0b4ecc1084429beb368a1936 100644 --- a/ci/build-with-coverage.sh +++ b/ci/build-with-coverage.sh @@ -2,6 +2,8 @@ set -eux -o pipefail +clang_version=$(clang --version | head -n 1 | cut -d' ' -f 3) + # Mixed gcc and Rust/LLVM coverage for the C API tests: # https://searchfox.org/mozilla-central/source/browser/config/mozconfigs/linux64/code-coverage#15 export CC="clang" @@ -9,7 +11,7 @@ export CFLAGS="-coverage -ftest-coverage -fprofile-arcs" # RUSTFLAGS: "-Cinstrument-coverage" export RUSTDOCFLAGS="-Cinstrument-coverage" export LLVM_PROFILE_FILE="coverage-profiles/coverage-%p-%m.profraw" -export LDFLAGS="--coverage -L/usr/lib64/clang/14.0.6/lib/linux" +export LDFLAGS="--coverage -L/usr/lib64/clang/$clang_version/lib/linux" export LIBS="-lclang_rt.profile-x86_64" export RUSTC_BOOTSTRAP="1" # hack to make -Zprofile work on the non-nightly compiler export CARGO_INCREMENTAL="0" # -Zprofile (gcov) doesn't like incremental compilation diff --git a/ci/container_builds.yml b/ci/container_builds.yml index 9ddcf6922a413a54517c6c53178f1f753041fbdb..a81d016d6d0245007b2cd662ad6e4b956d8a389a 100644 --- a/ci/container_builds.yml +++ b/ci/container_builds.yml @@ -6,9 +6,9 @@ include: variables: # When branching change the suffix to avoid conflicts with images # from the main branch - BASE_TAG: "2022-09-26.4-main" + BASE_TAG: "2022-10-24.0-main" RUST_STABLE: "1.64.0" - RUST_MINIMUM: "1.58.1" + RUST_MINIMUM: "1.63.0" .container.opensuse@common: stage: "container-build" diff --git a/configure.ac b/configure.ac index 1b125296cf7e8d679b67c1f4886f5b92eeab3ced..ee808192e41ac630c85f4d2a26cf9a53b0cee7b8 100644 --- a/configure.ac +++ b/configure.ac @@ -107,7 +107,7 @@ AS_IF(test x$RUSTC = xno, dnl MSRV - Minimum Supported Rust Version dnl If you change this, please update COMPILING.md -MINIMUM_RUST_VER=1.58 +MINIMUM_RUST_VER=1.63 rust_version=`$RUSTC --version | sed -e 's/^rustc //g'` AX_COMPARE_VERSION([$rust_version],[lt],[$MINIMUM_RUST_VER], [ AC_MSG_ERROR([librsvg needs at least rustc version $MINIMUM_RUST_VER]) diff --git a/examples/proportional.rs b/examples/proportional.rs index 9924b3ed9bef97a77fc106d47e52ad37426b8715..aefc5df9395f7c59f70c5c70a29b1e94d45a50eb 100644 --- a/examples/proportional.rs +++ b/examples/proportional.rs @@ -44,12 +44,7 @@ fn main() { let res = renderer.render_document( &cr, - &cairo::Rectangle { - x: 0.0, - y: 0.0, - width: f64::from(width), - height: f64::from(height), - }, + &cairo::Rectangle::new(0.0, 0.0, f64::from(width), f64::from(height)), ); match res { diff --git a/gdk-pixbuf-loader/Cargo.lock b/gdk-pixbuf-loader/Cargo.lock new file mode 100644 index 0000000000000000000000000000000000000000..1279026c4d4108cc088269e3b83e2ba750c1dedf --- /dev/null +++ b/gdk-pixbuf-loader/Cargo.lock @@ -0,0 +1,1961 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "aho-corasick" +version = "0.7.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4f55bd91a0978cbfd91c457a164bab8b4001c833b7f323132c0a4e1922dd44e" +dependencies = [ + "memchr", +] + +[[package]] +name = "android_system_properties" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" +dependencies = [ + "libc", +] + +[[package]] +name = "anyhow" +version = "1.0.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" + +[[package]] +name = "approx" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab112f0a86d568ea0e627cc1d6be74a1e9cd55214684db5561995f6dad897c6" +dependencies = [ + "num-traits", +] + +[[package]] +name = "atty" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" +dependencies = [ + "hermit-abi", + "libc", + "winapi", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "block" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d8c1fef690941d3e7788d328517591fecc684c084084702d6ff1641e993699a" + +[[package]] +name = "bumpalo" +version = "3.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" + +[[package]] +name = "bytemuck" +version = "1.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2f5715e491b5a1598fc2bef5a606847b5dc1d48ea625bd3c02c00de8285591da" + +[[package]] +name = "byteorder" +version = "1.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" + +[[package]] +name = "cairo-rs" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08f9ee4a4ca9239c9a839453dce04b7ddee2f859ec4cd7acd1f5703b68db549c" +dependencies = [ + "bitflags", + "cairo-sys-rs", + "glib", + "libc", + "once_cell", + "thiserror", +] + +[[package]] +name = "cairo-sys-rs" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5119ea655ec777b523f0b57279e70f8a4542f61b0e98a48f892b4ef043fd4c5d" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "cast" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-expr" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0357a6402b295ca3a86bc148e84df46c02e41f41fef186bda662557ef6328aa" +dependencies = [ + "smallvec", +] + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfd4d1b31faaa3a89d7934dbded3111da0d2ef28e3ebccdb4f0179f5929d1ef1" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "time", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "clap" +version = "3.2.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "86447ad904c7fb335a790c9d7fe3d0d971dc523b8ccd1561a520de9a85302750" +dependencies = [ + "atty", + "bitflags", + "clap_derive", + "clap_lex", + "indexmap", + "once_cell", + "strsim", + "termcolor", + "textwrap", +] + +[[package]] +name = "clap_derive" +version = "3.2.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea0c8bce528c4be4da13ea6fead8965e95b6073585a2f05204bd8f4119f82a65" +dependencies = [ + "heck", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "clap_lex" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" +dependencies = [ + "os_str_bytes", +] + +[[package]] +name = "codespan-reporting" +version = "0.11.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3538270d33cc669650c4b093848450d380def10c331d38c768e34cac80576e6e" +dependencies = [ + "termcolor", + "unicode-width", +] + +[[package]] +name = "convert_case" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6245d59a3e82a7fc217c5828a6692dbc6dfb63a0c8c90495621f7b9d79704a0e" + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "crossbeam-channel" +version = "0.5.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2dd04ddaf88237dc3b8d8f9a3c1004b506b54b3313403944054d23c0870c521" +dependencies = [ + "cfg-if", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-deque" +version = "0.8.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "715e8152b692bba2d374b53d4875445368fdf21a94751410af607a5ac677d1fc" +dependencies = [ + "cfg-if", + "crossbeam-epoch", + "crossbeam-utils", +] + +[[package]] +name = "crossbeam-epoch" +version = "0.9.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f916dfc5d356b0ed9dae65f1db9fc9770aa2851d2662b988ccf4fe3516e86348" +dependencies = [ + "autocfg", + "cfg-if", + "crossbeam-utils", + "memoffset", + "scopeguard", +] + +[[package]] +name = "crossbeam-utils" +version = "0.8.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "edbafec5fa1f196ca66527c1b12c2ec4745ca14b50f1ad8f9f6f720b55d11fac" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "cssparser" +version = "0.28.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1db8599a9761b371751fbf13e076fa03c6e1a78f8c5288e6ab9467f10a2322c1" +dependencies = [ + "cssparser-macros", + "dtoa-short", + "itoa", + "matches", + "phf", + "proc-macro2", + "quote", + "smallvec", + "syn", +] + +[[package]] +name = "cssparser-macros" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dfae75de57f2b2e85e8768c3ea840fd159c8f33e2b6522c7835b7abac81be16e" +dependencies = [ + "quote", + "syn", +] + +[[package]] +name = "cstr" +version = "0.2.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8aa998c33a6d3271e3678950a22134cd7dd27cef86dee1b611b5b14207d1d90b" +dependencies = [ + "proc-macro2", + "quote", +] + +[[package]] +name = "cxx" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f83d0ebf42c6eafb8d7c52f7e5f2d3003b89c7aa4fd2b79229209459a849af8" +dependencies = [ + "cc", + "cxxbridge-flags", + "cxxbridge-macro", + "link-cplusplus", +] + +[[package]] +name = "cxx-build" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07d050484b55975889284352b0ffc2ecbda25c0c55978017c132b29ba0818a86" +dependencies = [ + "cc", + "codespan-reporting", + "once_cell", + "proc-macro2", + "quote", + "scratch", + "syn", +] + +[[package]] +name = "cxxbridge-flags" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "99d2199b00553eda8012dfec8d3b1c75fce747cf27c169a270b3b99e3448ab78" + +[[package]] +name = "cxxbridge-macro" +version = "1.0.79" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcb67a6de1f602736dd7eaead0080cf3435df806c61b24b13328db128c58868f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "data-url" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a30bfce702bcfa94e906ef82421f2c0e61c076ad76030c16ee5d2e9a32fe193" +dependencies = [ + "matches", +] + +[[package]] +name = "derive_more" +version = "0.99.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb810d30a7c1953f91334de7244731fc3f3c10d7fe163338a35b9f640960321" +dependencies = [ + "convert_case", + "proc-macro2", + "quote", + "rustc_version", + "syn", +] + +[[package]] +name = "dtoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56899898ce76aaf4a0f24d914c97ea6ed976d42fec6ad33fcbb0a1103e07b2b0" + +[[package]] +name = "dtoa-short" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bde03329ae10e79ede66c9ce4dc930aa8599043b0743008548680f25b91502d6" +dependencies = [ + "dtoa", +] + +[[package]] +name = "either" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90e5c1c8368803113bf0c9584fc495a58b86dc8a29edbf8fe877d21d9507e797" + +[[package]] +name = "encoding" +version = "0.2.33" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b0d943856b990d12d3b55b359144ff341533e516d94098b1d3fc1ac666d36ec" +dependencies = [ + "encoding-index-japanese", + "encoding-index-korean", + "encoding-index-simpchinese", + "encoding-index-singlebyte", + "encoding-index-tradchinese", +] + +[[package]] +name = "encoding-index-japanese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e8b2ff42e9a05335dbf8b5c6f7567e5591d0d916ccef4e0b1710d32a0d0c91" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-korean" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc33fb8e6bcba213fe2f14275f0963fd16f0a02c878e3095ecfdf5bee529d81" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-simpchinese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d87a7194909b9118fc707194baa434a4e3b0fb6a5a757c73c3adb07aa25031f7" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-singlebyte" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3351d5acffb224af9ca265f435b859c7c01537c0849754d3db3fdf2bfe2ae84a" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding-index-tradchinese" +version = "1.20141219.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd0e20d5688ce3cab59eb3ef3a2083a5c77bf496cb798dc6fcdb75f323890c18" +dependencies = [ + "encoding_index_tests", +] + +[[package]] +name = "encoding_index_tests" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a246d82be1c9d791c5dfde9a2bd045fc3cbba3fa2b11ad558f27d01712f00569" + +[[package]] +name = "float-cmp" +version = "0.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "98de4bbd547a563b716d8dfa9aad1cb19bfab00f4fa09a6a4ed21dbcf44ce9c4" +dependencies = [ + "num-traits", +] + +[[package]] +name = "form_urlencoded" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9c384f161156f5260c24a097c56119f9be8c798586aecc13afbcbe7b7e26bf8" +dependencies = [ + "percent-encoding", +] + +[[package]] +name = "futf" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df420e2e84819663797d1ec6544b13c5be84629e7bb00dc960d6917db2987843" +dependencies = [ + "mac", + "new_debug_unreachable", +] + +[[package]] +name = "futures-channel" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52ba265a92256105f45b719605a571ffe2d1f0fea3807304b522c1d778f79eed" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04909a7a7e4633ae6c4a9ab280aeb86da1236243a77b694a49eacd659a4bd3ac" + +[[package]] +name = "futures-executor" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7acc85df6714c176ab5edf386123fafe217be88c0840ec11f199441134a074e2" +dependencies = [ + "futures-core", + "futures-task", + "futures-util", +] + +[[package]] +name = "futures-io" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00f5fb52a06bdcadeb54e8d3671f8888a39697dcb0b81b23b55174030427f4eb" + +[[package]] +name = "futures-macro" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bdfb8ce053d86b91919aad980c220b1fb8401a9394410e1c289ed7e66b61835d" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "futures-task" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2ffb393ac5d9a6eaa9d3fdf37ae2776656b706e200c8e16b1bdb227f5198e6ea" + +[[package]] +name = "futures-util" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "197676987abd2f9cadff84926f410af1c183608d36641465df73ae8211dc65d6" +dependencies = [ + "futures-core", + "futures-macro", + "futures-task", + "pin-project-lite", + "pin-utils", + "slab", +] + +[[package]] +name = "fxhash" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" +dependencies = [ + "byteorder", +] + +[[package]] +name = "gdk-pixbuf" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0fb526c8c3a075eda15f961820edf3e15fe18576ac4fbabbb324e4cc6c421e6" +dependencies = [ + "bitflags", + "gdk-pixbuf-sys", + "gio", + "glib", + "libc", +] + +[[package]] +name = "gdk-pixbuf-sys" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7df12d15c10c3c5a84d9fb4ba0e27659f6a2bdee4f27f8b17126da15d5ddd3f2" +dependencies = [ + "gio-sys", + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "getrandom" +version = "0.1.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fc3cb4d91f53b50155bdcfd23f6a4c39ae1969c2ae85982b135750cccaf5fce" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.9.0+wasi-snapshot-preview1", +] + +[[package]] +name = "getrandom" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c05aeb6a22b8f62540c194aac980f2115af067bfe15a0734d7277a768d396b31" +dependencies = [ + "cfg-if", + "libc", + "wasi 0.11.0+wasi-snapshot-preview1", +] + +[[package]] +name = "gio" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3025f17aab38ebbb40d785806cf36c292c4dd6755b05584fc52d34fb87533263" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-io", + "futures-util", + "gio-sys", + "glib", + "libc", + "once_cell", + "pin-project-lite", + "smallvec", + "thiserror", +] + +[[package]] +name = "gio-sys" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6da1bba9d3f2ab13a6e9932c40f240dc99ebc9f0bdc35cfb130d1a3df36f374c" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", + "winapi", +] + +[[package]] +name = "glib" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "079d580b26ee5eb504942bd4340a1218323a4cf19a31d776d62cd3a2a8416622" +dependencies = [ + "bitflags", + "futures-channel", + "futures-core", + "futures-executor", + "futures-task", + "futures-util", + "gio-sys", + "glib-macros", + "glib-sys", + "gobject-sys", + "libc", + "once_cell", + "smallvec", + "thiserror", +] + +[[package]] +name = "glib-macros" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e195c1311fa6b04d7b896ea39385f6bd60ef5d25bf74a7c11c8c3f94f6c1a572" +dependencies = [ + "anyhow", + "heck", + "proc-macro-crate", + "proc-macro-error", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "glib-sys" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b33357bb421a77bd849f6a0bfcaf3b4b256a2577802971bb5dd522d530f27021" +dependencies = [ + "libc", + "system-deps", +] + +[[package]] +name = "gobject-sys" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "63ca11a57400f3d4fda594e002844be47900c9fb8b29e2155c6e37a1f24e51b3" +dependencies = [ + "glib-sys", + "libc", + "system-deps", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.51" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5a6ef98976b22b3b7f2f3a806f858cb862044cfa66805aa3ad84cb3d3b785ed" +dependencies = [ + "android_system_properties", + "core-foundation-sys", + "iana-time-zone-haiku", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "iana-time-zone-haiku" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0703ae284fc167426161c2e3f1da3ea71d94b21bedbcc9494e92b28e334e3dca" +dependencies = [ + "cxx", + "cxx-build", +] + +[[package]] +name = "idna" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ddfc70884202db2244c223200c204c2bda1bc6e0998d11b5e024d657209e6" +dependencies = [ + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "itertools" +version = "0.10.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" +dependencies = [ + "either", +] + +[[package]] +name = "itoa" +version = "0.4.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" + +[[package]] +name = "js-sys" +version = "0.3.60" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49409df3e3bf0856b916e2ceaca09ee28e6871cf7d9ce97a692cacfdb2a25a47" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.135" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "68783febc7782c6c5cb401fbda4de5a9898be1762314da0bb2c10ced61f18b0c" + +[[package]] +name = "librsvg" +version = "2.55.0" +dependencies = [ + "byteorder", + "cairo-rs", + "cast", + "chrono", + "clap", + "cssparser", + "data-url", + "encoding", + "float-cmp", + "gdk-pixbuf", + "gio", + "glib", + "itertools", + "language-tags", + "libc", + "locale_config", + "markup5ever", + "nalgebra", + "num-traits", + "once_cell", + "pango", + "pangocairo", + "rayon", + "rctree", + "regex", + "rgb", + "selectors", + "string_cache", + "system-deps", + "tinyvec", + "url", + "xml5ever", +] + +[[package]] +name = "link-cplusplus" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9272ab7b96c9046fbc5bc56c06c117cb639fe2d509df0c421cad82d2915cf369" +dependencies = [ + "cc", +] + +[[package]] +name = "locale_config" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "08d2c35b16f4483f6c26f0e4e9550717a2f6575bcd6f12a53ff0c490a94a6934" +dependencies = [ + "lazy_static", + "objc", + "objc-foundation", + "regex", + "winapi", +] + +[[package]] +name = "lock_api" +version = "0.4.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "435011366fe56583b16cf956f9df0095b405b82d76425bc8981c0e22e60ec4df" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "mac" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c41e0c4fef86961ac6d6f8a82609f55f31b05e4fce149ac5710e439df7619ba4" + +[[package]] +name = "malloc_buf" +version = "0.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62bb907fe88d54d8d9ce32a3cceab4218ed2f6b7d35617cafe9adf84e43919cb" +dependencies = [ + "libc", +] + +[[package]] +name = "markup5ever" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a24f40fb03852d1cdd84330cddcaf98e9ec08a7b7768e952fad3b4cf048ec8fd" +dependencies = [ + "log", + "phf", + "phf_codegen", + "string_cache", + "string_cache_codegen", + "tendril", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "matrixmultiply" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "add85d4dd35074e6fedc608f8c8f513a3548619a9024b751949ef0e8e45a4d84" +dependencies = [ + "rawpointer", +] + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "memoffset" +version = "0.6.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" +dependencies = [ + "autocfg", +] + +[[package]] +name = "nalgebra" +version = "0.30.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4fb2d0de08694bed883320212c18ee3008576bfe8c306f4c3c4a58b4876998be" +dependencies = [ + "approx", + "matrixmultiply", + "nalgebra-macros", + "num-complex", + "num-rational", + "num-traits", + "simba", + "typenum", +] + +[[package]] +name = "nalgebra-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01fcc0b8149b4632adc89ac3b7b31a12fb6099a0317a4eb2ebff574ef7de7218" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "new_debug_unreachable" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e4a24736216ec316047a1fc4252e27dabb04218aa4a3f37c6e7ddbf1f9782b54" + +[[package]] +name = "nodrop" +version = "0.1.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" + +[[package]] +name = "num-complex" +version = "0.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ae39348c8bc5fbd7f40c727a9925f03517afd2ab27d46702108b6a7e5414c19" +dependencies = [ + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-rational" +version = "0.4.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0638a1c9d0a3c0914158145bc76cff373a75a627e6ecbfb71cbe6f453a5a19b0" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "objc" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "915b1b472bc21c53464d6c8461c9d3af805ba1ef837e1cac254428f4a77177b1" +dependencies = [ + "malloc_buf", +] + +[[package]] +name = "objc-foundation" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1add1b659e36c9607c7aab864a76c7a4c2760cd0cd2e120f3fb8b952c7e22bf9" +dependencies = [ + "block", + "objc", + "objc_id", +] + +[[package]] +name = "objc_id" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c92d4ddb4bd7b50d730c215ff871754d0da6b2178849f8a2a2ab69712d0c073b" +dependencies = [ + "objc", +] + +[[package]] +name = "once_cell" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e82dad04139b71a90c080c8463fe0dc7902db5192d939bd0950f074d014339e1" + +[[package]] +name = "os_str_bytes" +version = "6.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ff7415e9ae3fff1225851df9e0d9e4e5479f947619774677a63572e55e80eff" + +[[package]] +name = "pango" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7208c60f224cf6e44c551df5ee2ef38f9da0fd29d7c5a0402000b8ab0520e798" +dependencies = [ + "bitflags", + "gio", + "glib", + "libc", + "once_cell", + "pango-sys", +] + +[[package]] +name = "pango-sys" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "922441c228366ed98d3534b87bc7c987c50564094c3abbc3513717786419252d" +dependencies = [ + "glib-sys", + "gobject-sys", + "libc", + "system-deps", +] + +[[package]] +name = "pangocairo" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a726760a29e5e17d965d5d7573548e385ae9ce99cb7adcf70d75d4627f23fc7a" +dependencies = [ + "bitflags", + "cairo-rs", + "glib", + "libc", + "pango", + "pangocairo-sys", +] + +[[package]] +name = "pangocairo-sys" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b8281198ea4596bdc6e22b0d3565471c9456d7125e423a785f866640c18b57ec" +dependencies = [ + "cairo-sys-rs", + "glib-sys", + "libc", + "pango-sys", + "system-deps", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dc9e0dc2adc1c69d09143aff38d3d30c5c3f0df0dad82e6d25547af174ebec0" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "paste" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b1de2e551fb905ac83f73f7aedf2f0cb4a0da7e35efa24a202a936269f1f18e1" + +[[package]] +name = "percent-encoding" +version = "2.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" + +[[package]] +name = "phf" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3dfb61232e34fcb633f43d12c58f83c1df82962dcdfa565a4e866ffc17dafe12" +dependencies = [ + "phf_macros", + "phf_shared 0.8.0", + "proc-macro-hack", +] + +[[package]] +name = "phf_codegen" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cbffee61585b0411840d3ece935cce9cb6321f01c45477d30066498cd5e1a815" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", +] + +[[package]] +name = "phf_generator" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17367f0cc86f2d25802b2c26ee58a7b23faeccf78a396094c13dced0d0182526" +dependencies = [ + "phf_shared 0.8.0", + "rand 0.7.3", +] + +[[package]] +name = "phf_generator" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5d5285893bb5eb82e6aaf5d59ee909a06a16737a8970984dd7746ba9283498d6" +dependencies = [ + "phf_shared 0.10.0", + "rand 0.8.5", +] + +[[package]] +name = "phf_macros" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f6fde18ff429ffc8fe78e2bf7f8b7a5a5a6e2a8b58bc5a9ac69198bbda9189c" +dependencies = [ + "phf_generator 0.8.0", + "phf_shared 0.8.0", + "proc-macro-hack", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "phf_shared" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c00cf8b9eafe68dde5e9eaa2cef8ee84a9336a47d566ec55ca16589633b65af7" +dependencies = [ + "siphasher", +] + +[[package]] +name = "phf_shared" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6796ad771acdc0123d2a88dc428b5e38ef24456743ddb1744ed628f9815c096" +dependencies = [ + "siphasher", +] + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pixbufloader-svg" +version = "0.0.1" +dependencies = [ + "cairo-rs", + "cstr", + "gdk-pixbuf", + "gio", + "glib", + "libc", + "librsvg", +] + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "ppv-lite86" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" + +[[package]] +name = "precomputed-hash" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "925383efa346730478fb4838dbe9137d2a47675ad789c546d150a6e1dd4ab31c" + +[[package]] +name = "proc-macro-crate" +version = "1.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eda0fc3b0fb7c975631757e14d9049da17374063edb6ebbcbc54d880d4fe94e9" +dependencies = [ + "once_cell", + "thiserror", + "toml", +] + +[[package]] +name = "proc-macro-error" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" +dependencies = [ + "proc-macro-error-attr", + "proc-macro2", + "quote", + "syn", + "version_check", +] + +[[package]] +name = "proc-macro-error-attr" +version = "1.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" +dependencies = [ + "proc-macro2", + "quote", + "version_check", +] + +[[package]] +name = "proc-macro-hack" +version = "0.5.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" + +[[package]] +name = "proc-macro2" +version = "1.0.47" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "rand" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a6b1679d49b24bbfe0c803429aa1874472f50d9b363131f0e89fc356b544d03" +dependencies = [ + "getrandom 0.1.16", + "libc", + "rand_chacha 0.2.2", + "rand_core 0.5.1", + "rand_hc", + "rand_pcg", +] + +[[package]] +name = "rand" +version = "0.8.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" +dependencies = [ + "libc", + "rand_chacha 0.3.1", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_chacha" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4c8ed856279c9737206bf725bf36935d8666ead7aa69b52be55af369d193402" +dependencies = [ + "ppv-lite86", + "rand_core 0.5.1", +] + +[[package]] +name = "rand_chacha" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" +dependencies = [ + "ppv-lite86", + "rand_core 0.6.4", +] + +[[package]] +name = "rand_core" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "90bde5296fc891b0cef12a6d03ddccc162ce7b2aff54160af9338f8d40df6d19" +dependencies = [ + "getrandom 0.1.16", +] + +[[package]] +name = "rand_core" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" +dependencies = [ + "getrandom 0.2.8", +] + +[[package]] +name = "rand_hc" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ca3129af7b92a17112d59ad498c6f81eaf463253766b90396d39ea7a39d6613c" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rand_pcg" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "16abd0c1b639e9eb4d7c50c0b8100b0d0f849be2349829c740fe8e6eb4816429" +dependencies = [ + "rand_core 0.5.1", +] + +[[package]] +name = "rawpointer" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "60a357793950651c4ed0f3f52338f53b2f809f32d83a07f72909fa13e4c6c1e3" + +[[package]] +name = "rayon" +version = "1.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bd99e5772ead8baa5215278c9b15bf92087709e9c1b2d1f97cdb5a183c933a7d" +dependencies = [ + "autocfg", + "crossbeam-deque", + "either", + "rayon-core", +] + +[[package]] +name = "rayon-core" +version = "1.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258bcdb5ac6dad48491bb2992db6b7cf74878b0384908af124823d118c99683f" +dependencies = [ + "crossbeam-channel", + "crossbeam-deque", + "crossbeam-utils", + "num_cpus", +] + +[[package]] +name = "rctree" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9ae028b272a6e99d9f8260ceefa3caa09300a8d6c8d2b2001316474bc52122e9" + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "regex" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c4eb3267174b8c6c2f654116623910a0fef09c4753f8dd83db29c48a0df988b" +dependencies = [ + "aho-corasick", + "memchr", + "regex-syntax", +] + +[[package]] +name = "regex-syntax" +version = "0.6.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3f87b73ce11b1619a3c6332f45341e0047173771e8b8b73f87bfeefb7b56244" + +[[package]] +name = "rgb" +version = "0.8.34" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3603b7d71ca82644f79b5a06d1220e9a58ede60bd32255f698cb1af8838b8db3" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "rustc_version" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366" +dependencies = [ + "semver", +] + +[[package]] +name = "safe_arch" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "794821e4ccb0d9f979512f9c1973480123f9bd62a90d74ab0f9426fcf8f4a529" +dependencies = [ + "bytemuck", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "scratch" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8132065adcfd6e02db789d9285a0deb2f3fcb04002865ab67d5fb103533898" + +[[package]] +name = "selectors" +version = "0.23.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fdea87c686be721aab36607728047801ee21561bfdbd6bf0da7ace2536d5879f" +dependencies = [ + "bitflags", + "cssparser", + "derive_more", + "fxhash", + "log", + "phf", + "phf_codegen", + "precomputed-hash", + "servo_arc", + "smallvec", +] + +[[package]] +name = "semver" +version = "1.0.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" + +[[package]] +name = "serde" +version = "1.0.145" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "728eb6351430bccb993660dfffc5a72f91ccc1295abaa8ce19b27ebe4f75568b" + +[[package]] +name = "servo_arc" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d98238b800e0d1576d8b6e3de32827c2d74bee68bb97748dcf5071fb53965432" +dependencies = [ + "nodrop", + "stable_deref_trait", +] + +[[package]] +name = "simba" +version = "0.7.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c48e45e5961033db030b56ad67aef22e9c908c493a6e8348c0a0f6b93433cd77" +dependencies = [ + "approx", + "num-complex", + "num-traits", + "paste", + "wide", +] + +[[package]] +name = "siphasher" +version = "0.3.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7bd3e3206899af3f8b12af284fafc038cc1dc2b41d1b89dd17297221c5d225de" + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507befe795404456341dfab10cef66ead4c041f62b8b11bbb92bffe5d0953e0" + +[[package]] +name = "stable_deref_trait" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" + +[[package]] +name = "string_cache" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "213494b7a2b503146286049378ce02b482200519accc31872ee8be91fa820a08" +dependencies = [ + "new_debug_unreachable", + "once_cell", + "parking_lot", + "phf_shared 0.10.0", + "precomputed-hash", + "serde", +] + +[[package]] +name = "string_cache_codegen" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6bb30289b722be4ff74a408c3cc27edeaad656e06cb1fe8fa9231fa59c728988" +dependencies = [ + "phf_generator 0.10.0", + "phf_shared 0.10.0", + "proc-macro2", + "quote", +] + +[[package]] +name = "strsim" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" + +[[package]] +name = "syn" +version = "1.0.103" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a864042229133ada95abf3b54fdc62ef5ccabe9515b64717bcb9a1919e59445d" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "system-deps" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2955b1fe31e1fa2fbd1976b71cc69a606d7d4da16f6de3333d0c92d51419aeff" +dependencies = [ + "cfg-expr", + "heck", + "pkg-config", + "toml", + "version-compare", +] + +[[package]] +name = "tendril" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d24a120c5fc464a3458240ee02c299ebcb9d67b5249c8848b09d639dca8d7bb0" +dependencies = [ + "futf", + "mac", + "utf-8", +] + +[[package]] +name = "termcolor" +version = "1.1.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" +dependencies = [ + "winapi-util", +] + +[[package]] +name = "textwrap" +version = "0.15.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "949517c0cf1bf4ee812e2e07e08ab448e3ae0d23472aee8a06c985f0c8815b16" + +[[package]] +name = "thiserror" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.37" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "toml" +version = "0.5.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d82e1a7758622a465f8cee077614c73484dac5b836c02ff6a40d5d1010324d7" +dependencies = [ + "serde", +] + +[[package]] +name = "typenum" +version = "1.15.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" + +[[package]] +name = "unicode-normalization" +version = "0.1.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "unicode-width" +version = "0.1.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c0edd1e5b14653f783770bce4a4dabb4a5108a5370a5f5d8cfe8710c361f6c8b" + +[[package]] +name = "url" +version = "2.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0d68c799ae75762b8c3fe375feb6600ef5602c883c5d21eb51c09f22b83c4643" +dependencies = [ + "form_urlencoded", + "idna", + "percent-encoding", +] + +[[package]] +name = "utf-8" +version = "0.7.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" + +[[package]] +name = "version-compare" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fe88247b92c1df6b6de80ddc290f3976dbdf2f5f5d3fd049a9fb598c6dd5ca73" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "wasi" +version = "0.9.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cccddf32554fecc6acb585f82a32a72e28b48f8c4c1883ddfeeeaa96f7d8e519" + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eaf9f5aceeec8be17c128b2e93e031fb8a4d469bb9c4ae2d7dc1888b26887268" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c8ffb332579b0557b52d268b91feab8df3615f265d5270fec2a8c95b17c1142" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "052be0f94026e6cbc75cdefc9bae13fd6052cdcaf532fa6c45e7ae33a1e6c810" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "07bc0c051dc5f23e307b13285f9d75df86bfdf816c5721e573dec1f9b8aa193c" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c38c045535d93ec4f0b4defec448e4291638ee608530863b1e2ba115d4fff7f" + +[[package]] +name = "wide" +version = "0.7.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae41ecad2489a1655c8ef8489444b0b113c0a0c795944a3572a0931cf7d2525c" +dependencies = [ + "bytemuck", + "safe_arch", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-util" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" +dependencies = [ + "winapi", +] + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" +dependencies = [ + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" + +[[package]] +name = "windows_aarch64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" + +[[package]] +name = "windows_i686_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" + +[[package]] +name = "windows_i686_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" + +[[package]] +name = "windows_x86_64_gnullvm" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.42.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" + +[[package]] +name = "xml5ever" +version = "0.16.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9234163818fd8e2418fcde330655e757900d4236acd8cc70fef345ef91f6d865" +dependencies = [ + "log", + "mac", + "markup5ever", + "time", +] diff --git a/gdk-pixbuf-loader/Cargo.toml b/gdk-pixbuf-loader/Cargo.toml index b5a2e236a37a09787f88d91774d70a6306496f4c..524b11a2841d263c03eb829d630800014d63a535 100644 --- a/gdk-pixbuf-loader/Cargo.toml +++ b/gdk-pixbuf-loader/Cargo.toml @@ -9,12 +9,9 @@ crate-type = ["cdylib"] [dependencies] librsvg = { path = ".." } -gdk-pixbuf-sys = "0.15" -gdk-pixbuf = "0.15" +gdk-pixbuf = "0.16" libc = "0.2" -glib-sys = "0.15" -gobject-sys = "0.15" -glib = "0.15" -gio = "0.15" -cairo-rs = "0.15" +glib = "0.16" +gio = "0.16" +cairo-rs = "0.16" cstr = "0.2" \ No newline at end of file diff --git a/gdk-pixbuf-loader/src/lib.rs b/gdk-pixbuf-loader/src/lib.rs index 40d992e30f55b6330b9817625fc8424173495343..76dc91f8b647c523191d4baf6b8fe8c4a6d2ff78 100644 --- a/gdk-pixbuf-loader/src/lib.rs +++ b/gdk-pixbuf-loader/src/lib.rs @@ -1,21 +1,20 @@ use std::ptr::null_mut; -use gdk_pixbuf_sys::GdkPixbuf; -use gdk_pixbuf_sys::{ - GdkPixbufFormat, GdkPixbufModule, GdkPixbufModulePattern, GdkPixbufModulePreparedFunc, - GdkPixbufModuleSizeFunc, GdkPixbufModuleUpdatedFunc, GDK_PIXBUF_FORMAT_SCALABLE, - GDK_PIXBUF_FORMAT_THREADSAFE, +use gdk_pixbuf::ffi::{ + GdkPixbuf, GdkPixbufFormat, GdkPixbufModule, GdkPixbufModulePattern, + GdkPixbufModulePreparedFunc, GdkPixbufModuleSizeFunc, GdkPixbufModuleUpdatedFunc, + GDK_PIXBUF_FORMAT_SCALABLE, GDK_PIXBUF_FORMAT_THREADSAFE, }; use libc::{c_char, c_int, c_uint}; +use glib::ffi::{gboolean, gpointer, GError}; use glib::translate::{IntoGlib, ToGlibPtr}; use glib::Bytes; -use glib_sys::{gboolean, GError}; use gio::prelude::MemoryInputStreamExt; use gio::MemoryInputStream; -use gobject_sys::GObject; +use glib::gobject_ffi::GObject; use librsvg::rsvg_convert_only::LegacySize; use librsvg::Loader; @@ -26,7 +25,7 @@ struct SvgContext { size_func: GdkPixbufModuleSizeFunc, prep_func: GdkPixbufModulePreparedFunc, update_func: GdkPixbufModuleUpdatedFunc, - user_data: glib_sys::gpointer, + user_data: gpointer, stream: MemoryInputStream, } @@ -35,10 +34,10 @@ unsafe extern "C" fn begin_load( size_func: GdkPixbufModuleSizeFunc, prep_func: GdkPixbufModulePreparedFunc, update_func: GdkPixbufModuleUpdatedFunc, - user_data: glib_sys::gpointer, + user_data: gpointer, error: *mut *mut GError, -) -> glib_sys::gpointer { - if error != null_mut() { +) -> gpointer { + if !error.is_null() { *error = null_mut(); } @@ -51,35 +50,35 @@ unsafe extern "C" fn begin_load( stream, }); - Box::into_raw(ctx) as glib_sys::gpointer + Box::into_raw(ctx) as gpointer } #[no_mangle] unsafe extern "C" fn load_increment( - user_data: glib_sys::gpointer, + user_data: gpointer, buffer: *const u8, size: c_uint, error: *mut *mut GError, ) -> gboolean { - if error != null_mut() { + if !error.is_null() { *error = null_mut(); } let ctx = user_data as *mut SvgContext; let data = std::slice::from_raw_parts(buffer, size as usize); - (&*ctx).stream.add_bytes(&Bytes::from(data)); + (*ctx).stream.add_bytes(&Bytes::from(data)); true.into_glib() } #[no_mangle] -unsafe extern "C" fn stop_load(user_data: glib_sys::gpointer, error: *mut *mut GError) -> gboolean { +unsafe extern "C" fn stop_load(user_data: gpointer, error: *mut *mut GError) -> gboolean { let ctx = Box::from_raw(user_data as *mut SvgContext); - if error != null_mut() { + if !error.is_null() { *error = null_mut(); } - fn _inner_stop_load(ctx: &Box) -> Result { + fn _inner_stop_load(ctx: &SvgContext) -> Result { let handle = Loader::new() .read_stream::<_, gio::File, gio::Cancellable>(&ctx.stream, None, None) .map_err(|e| e.to_string())?; @@ -116,7 +115,7 @@ unsafe extern "C" fn stop_load(user_data: glib_sys::gpointer, error: *mut *mut G let pixbuf = match _inner_stop_load(&ctx) { Ok(r) => r, Err(e) => { - if error != null_mut() { + if !error.is_null() { let gerr = glib::Error::new(gdk_pixbuf::PixbufError::Failed, &e); *error = gerr.to_glib_full() as *mut GError; } @@ -136,7 +135,7 @@ unsafe extern "C" fn stop_load(user_data: glib_sys::gpointer, error: *mut *mut G } // The module loader increases a ref so we drop the pixbuf here - gobject_sys::g_object_unref(pixbuf as *mut GObject); + glib::gobject_ffi::g_object_unref(pixbuf as *mut GObject); true.into_glib() } @@ -196,7 +195,7 @@ extern "C" fn fill_info(info: &mut GdkPixbufFormat) { #[cfg(test)] mod tests { - use gdk_pixbuf_sys::{ + use gdk_pixbuf::ffi::{ GdkPixbufFormat, GDK_PIXBUF_FORMAT_SCALABLE, GDK_PIXBUF_FORMAT_THREADSAFE, }; use glib::translate::IntoGlib; @@ -313,20 +312,20 @@ mod tests { #[test] fn minimal_svg() { unsafe extern "C" fn prep_cb( - pb: *mut gdk_pixbuf_sys::GdkPixbuf, - pba: *mut gdk_pixbuf_sys::GdkPixbufAnimation, + pb: *mut gdk_pixbuf::ffi::GdkPixbuf, + pba: *mut gdk_pixbuf::ffi::GdkPixbufAnimation, user_data: *mut libc::c_void, ) { assert_eq!(user_data, null_mut()); assert_eq!(pba, null_mut()); - let w = gdk_pixbuf_sys::gdk_pixbuf_get_width(pb); - let h = gdk_pixbuf_sys::gdk_pixbuf_get_height(pb); - let stride = gdk_pixbuf_sys::gdk_pixbuf_get_rowstride(pb); + let w = gdk_pixbuf::ffi::gdk_pixbuf_get_width(pb); + let h = gdk_pixbuf::ffi::gdk_pixbuf_get_height(pb); + let stride = gdk_pixbuf::ffi::gdk_pixbuf_get_rowstride(pb); assert_eq!(w, 100); assert_eq!(h, 150); - let pixels = gdk_pixbuf_sys::gdk_pixbuf_get_pixels(pb); + let pixels = gdk_pixbuf::ffi::gdk_pixbuf_get_pixels(pb); // Upper left pixel #aa1144ff assert_eq!(*pixels, 0xaa); diff --git a/src/api.rs b/src/api.rs index 9079278ca70be30c597dd6b38b16a859790c104e..54e580faeff2adcd4fc41c960ae1c4bd48ff4e29 100644 --- a/src/api.rs +++ b/src/api.rs @@ -131,7 +131,7 @@ impl Loader { /// let renderer = librsvg::CairoRenderer::new(&svg_handle); /// renderer.render_document( /// &cr, - /// &cairo::Rectangle { x: 0.0, y: 0.0, width: 640.0, height: 480.0 }, + /// &cairo::Rectangle::new(0.0, 0.0, 640.0, 480.0), /// )?; /// # Ok::<(), librsvg::RenderingError>(()) /// ``` diff --git a/src/bin/rsvg-convert.rs b/src/bin/rsvg-convert.rs index d4aa82fb5f691c519ca9408a3ad74f2ef3f113e3..3a2207294612321e355981e30133d8d114a9ee87 100644 --- a/src/bin/rsvg-convert.rs +++ b/src/bin/rsvg-convert.rs @@ -241,6 +241,12 @@ impl Deref for Surface { } } +impl AsRef for Surface { + fn as_ref(&self) -> &cairo::Surface { + self + } +} + impl Surface { pub fn new( format: Format, @@ -345,18 +351,13 @@ impl Surface { // we do that with a separate transform. let scale = Scale { - x: final_size.w / geometry.width, - y: final_size.h / geometry.height, + x: final_size.w / geometry.width(), + y: final_size.h / geometry.height(), }; cr.scale(scale.x, scale.y); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: geometry.width, - height: geometry.height, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, geometry.width(), geometry.height()); match id { None => renderer.render_document(&cr, &viewport)?, @@ -564,7 +565,7 @@ impl Converter { let geometry = natural_geometry(&renderer, input, self.export_id.as_deref())?; - let natural_size = Size::new(geometry.width, geometry.height); + let natural_size = Size::new(geometry.width(), geometry.height()); let params = NormalizeParams::from_dpi(Dpi::new(self.dpi_x.0, self.dpi_y.0)); diff --git a/src/c_api/handle.rs b/src/c_api/handle.rs index 02770301f7722d81257f4805393b6651386a443b..f1e65c4f1bec01c1a185f83bd720a9f25ddd54d3 100644 --- a/src/c_api/handle.rs +++ b/src/c_api/handle.rs @@ -266,30 +266,23 @@ pub struct RsvgRectangle { impl From for RsvgRectangle { fn from(r: cairo::Rectangle) -> RsvgRectangle { RsvgRectangle { - x: r.x, - y: r.y, - width: r.width, - height: r.height, + x: r.x(), + y: r.y(), + width: r.width(), + height: r.height(), } } } impl From for cairo::Rectangle { fn from(r: RsvgRectangle) -> cairo::Rectangle { - cairo::Rectangle { - x: r.x, - y: r.y, - width: r.width, - height: r.height, - } + cairo::Rectangle::new(r.x, r.y, r.width, r.height) } } mod imp { use super::*; - use glib::{ - ParamFlags, ParamSpec, ParamSpecDouble, ParamSpecFlags, ParamSpecInt, ParamSpecString, - }; + use glib::{ParamSpec, ParamSpecDouble, ParamSpecFlags, ParamSpecInt, ParamSpecString}; use once_cell::sync::Lazy; /// Contains all the interior mutability for a RsvgHandle to be called @@ -324,51 +317,26 @@ mod imp { fn properties() -> &'static [ParamSpec] { static PROPERTIES: Lazy> = Lazy::new(|| { vec![ - ParamSpecFlags::builder("flags", HandleFlags::static_type()) - .flags(ParamFlags::READWRITE | ParamFlags::CONSTRUCT_ONLY) - .build(), - ParamSpecDouble::builder("dpi-x") - .flags(ParamFlags::READWRITE | ParamFlags::CONSTRUCT) - .build(), - ParamSpecDouble::builder("dpi-y") - .flags(ParamFlags::READWRITE | ParamFlags::CONSTRUCT) - .build(), - ParamSpecString::builder("base-uri") - .flags(ParamFlags::READWRITE | ParamFlags::CONSTRUCT) - .build(), - ParamSpecInt::builder("width") - .flags(ParamFlags::READABLE) - .build(), - ParamSpecInt::builder("height") - .flags(ParamFlags::READABLE) - .build(), - ParamSpecDouble::builder("em") - .flags(ParamFlags::READABLE) - .build(), - ParamSpecDouble::builder("ex") - .flags(ParamFlags::READABLE) - .build(), - ParamSpecString::builder("title") - .flags(ParamFlags::READABLE) - .build(), - ParamSpecString::builder("desc") - .flags(ParamFlags::READABLE) - .build(), - ParamSpecString::builder("metadata") - .flags(ParamFlags::READABLE) + ParamSpecFlags::builder::("flags") + .construct_only() .build(), + ParamSpecDouble::builder("dpi-x").construct().build(), + ParamSpecDouble::builder("dpi-y").construct().build(), + ParamSpecString::builder("base-uri").construct().build(), + ParamSpecInt::builder("width").read_only().build(), + ParamSpecInt::builder("height").read_only().build(), + ParamSpecDouble::builder("em").read_only().build(), + ParamSpecDouble::builder("ex").read_only().build(), + ParamSpecString::builder("title").read_only().build(), + ParamSpecString::builder("desc").read_only().build(), + ParamSpecString::builder("metadata").read_only().build(), ] }); PROPERTIES.as_ref() } - fn set_property( - &self, - obj: &Self::Type, - id: usize, - value: &glib::Value, - pspec: &ParamSpec, - ) { + fn set_property(&self, id: usize, value: &glib::Value, pspec: &ParamSpec) { + let obj = self.instance(); match pspec.name() { "flags" => { let v: HandleFlags = value.get().expect("flags value has incorrect type"); @@ -401,7 +369,8 @@ mod imp { } } - fn property(&self, obj: &Self::Type, id: usize, pspec: &ParamSpec) -> glib::Value { + fn property(&self, id: usize, pspec: &ParamSpec) -> glib::Value { + let obj = self.instance(); match pspec.name() { "flags" => obj.get_flags().to_value(), "dpi-x" => obj.get_dpi_x().to_value(), @@ -549,12 +518,7 @@ pub trait CairoRectangleExt { impl CairoRectangleExt for cairo::Rectangle { fn from_size(width: f64, height: f64) -> Self { - Self { - x: 0.0, - y: 0.0, - width, - height, - } + Self::new(0.0, 0.0, width, height) } } @@ -805,8 +769,8 @@ impl CHandle { .get_geometry_sub(id) .and_then(|(ink_r, _)| { // Keep these in sync with tests/src/reference.rs - let width = checked_i32(ink_r.width.round())?; - let height = checked_i32(ink_r.height.round())?; + let width = checked_i32(ink_r.width().round())?; + let height = checked_i32(ink_r.height().round())?; Ok((ink_r, width, height)) }) @@ -816,8 +780,8 @@ impl CHandle { RsvgDimensionData { width: w, height: h, - em: ink_r.width, - ex: ink_r.height, + em: ink_r.width(), + ex: ink_r.height(), } }); @@ -835,8 +799,8 @@ impl CHandle { self.get_geometry_sub(id) .and_then(|(ink_r, _)| { - let width = checked_i32(ink_r.width.round())?; - let height = checked_i32(ink_r.height.round())?; + let width = checked_i32(ink_r.width().round())?; + let height = checked_i32(ink_r.height().round())?; Ok((ink_r, width, height)) }) @@ -844,8 +808,8 @@ impl CHandle { inner.size_callback.call(width, height); Ok(RsvgPositionData { - x: checked_i32(ink_r.x)?, - y: checked_i32(ink_r.y)?, + x: checked_i32(ink_r.x())?, + y: checked_i32(ink_r.y())?, }) }) } @@ -893,12 +857,12 @@ impl CHandle { return Ok(()); } - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: f64::from(dimensions.width), - height: f64::from(dimensions.height), - }; + let viewport = cairo::Rectangle::new( + 0.0, + 0.0, + f64::from(dimensions.width), + f64::from(dimensions.height), + ); self.render_layer(cr, id, &viewport) } @@ -1032,7 +996,7 @@ fn is_cancellable(obj: *mut gio::ffi::GCancellable) -> bool { fn get_rust_handle(handle: *const RsvgHandle) -> CHandle { let handle = unsafe { &*handle }; - handle.imp().instance() + handle.imp().instance().to_owned() } #[no_mangle] @@ -1451,15 +1415,14 @@ pub unsafe extern "C" fn rsvg_handle_get_position_sub( #[no_mangle] pub unsafe extern "C" fn rsvg_handle_new() -> *const RsvgHandle { - let obj = glib::Object::new::(&[]).unwrap(); + let obj = glib::Object::new::(&[]); obj.to_glib_full() } #[no_mangle] pub unsafe extern "C" fn rsvg_handle_new_with_flags(flags: RsvgHandleFlags) -> *const RsvgHandle { - let obj = glib::Object::new::(&[("flags", &HandleFlags::from_bits_truncate(flags))]) - .unwrap(); + let obj = glib::Object::new::(&[("flags", &HandleFlags::from_bits_truncate(flags))]); obj.to_glib_full() } diff --git a/src/c_api/pixbuf_utils.rs b/src/c_api/pixbuf_utils.rs index a43518b64e710eed352346858ce4ed5bafc03e28..cc0efe05a8412fbb9f970ed20559a64b378605bd 100644 --- a/src/c_api/pixbuf_utils.rs +++ b/src/c_api/pixbuf_utils.rs @@ -133,12 +133,7 @@ pub fn render_to_pixbuf_at_size( desired_height / document_height, ); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: document_width, - height: document_height, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, document_width, document_height); // We do it with a cr transform so we can scale non-proportionally. renderer.render_document(&cr, &viewport)?; diff --git a/src/c_api/sizing.rs b/src/c_api/sizing.rs index e0c2090a0b2472bde72cb97daf8acef983b26cb9..e0c85bd1f1b56b0362e72a164173e6d7e946bc83 100644 --- a/src/c_api/sizing.rs +++ b/src/c_api/sizing.rs @@ -30,7 +30,7 @@ use super::handle::CairoRectangleExt; pub trait LegacySize { fn legacy_document_size(&self) -> Result<(f64, f64), RenderingError> { let (ink_r, _) = self.legacy_layer_geometry(None)?; - Ok((ink_r.width, ink_r.height)) + Ok((ink_r.width(), ink_r.height())) } fn legacy_layer_geometry( @@ -103,14 +103,14 @@ fn size_in_pixels_from_percentage_width_and_height( // Avoid division by zero below. If the viewBox is zero-sized, there's // not much we can do. - if approx_eq!(f64, vbox.width, 0.0) || approx_eq!(f64, vbox.height, 0.0) { + if approx_eq!(f64, vbox.width(), 0.0) || approx_eq!(f64, vbox.height(), 0.0) { return Some((0.0, 0.0)); } match (width.unit, height.unit) { - (Percent, Percent) => Some((vbox.width, vbox.height)), - (_, Percent) => Some((w, w * vbox.height / vbox.width)), - (Percent, _) => Some((h * vbox.width / vbox.height, h)), + (Percent, Percent) => Some((vbox.width(), vbox.height())), + (_, Percent) => Some((w, w * vbox.height() / vbox.width())), + (Percent, _) => Some((h * vbox.width() / vbox.height(), h)), (_, _) => unreachable!("should have been called with percentage units"), } } diff --git a/src/drawing_ctx.rs b/src/drawing_ctx.rs index fc458798a0eff55a357170617877f88a052a8023..444a758291f4c91508f6812bdfe5037723ec8844 100644 --- a/src/drawing_ctx.rs +++ b/src/drawing_ctx.rs @@ -759,7 +759,7 @@ impl DrawingCtx { .create_similar_surface_for_toplevel_viewport(&self.cr.target())?, )?, Filter::List(_) => { - cairo::Context::new(&*self.create_surface_for_toplevel_viewport()?)? + cairo::Context::new(self.create_surface_for_toplevel_viewport()?)? } }; @@ -1847,8 +1847,8 @@ impl DrawingCtx { /// Create a Pango context with a particular configuration. pub fn create_pango_context(font_options: &FontOptions, transform: &Transform) -> pango::Context { - let font_map = pangocairo::FontMap::default().unwrap(); - let context = font_map.create_context().unwrap(); + let font_map = pangocairo::FontMap::default(); + let context = font_map.create_context(); context.set_round_glyph_positions(false); @@ -2241,7 +2241,7 @@ impl From for cairo::Antialias { impl From for Transform { #[inline] fn from(m: cairo::Matrix) -> Self { - Self::new_unchecked(m.xx, m.yx, m.xy, m.yy, m.x0, m.y0) + Self::new_unchecked(m.xx(), m.yx(), m.xy(), m.yy(), m.x0(), m.y0()) } } diff --git a/src/handle.rs b/src/handle.rs index 8c9caed97add70d574281bfa6231c18a52a36fa2..36de859d0a8c914a3e71b0b6fe068779cdd7f269 100644 --- a/src/handle.rs +++ b/src/handle.rs @@ -342,10 +342,10 @@ impl Handle { // Render, transforming so element is at the new viewport's origin with_saved_cr(cr, || { - let factor = (element_viewport.width / ink_r.width()) - .min(element_viewport.height / ink_r.height()); + let factor = (element_viewport.width() / ink_r.width()) + .min(element_viewport.height() / ink_r.height()); - cr.translate(element_viewport.x, element_viewport.y); + cr.translate(element_viewport.x(), element_viewport.y()); cr.scale(factor, factor); cr.translate(-ink_r.x0, -ink_r.y0); diff --git a/src/lib.rs b/src/lib.rs index 56e71c800c7d276a83a72ce60515ce0f2cd6f6bf..022c015048aaa9edfa434231c07e3275ce7bce91 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -44,12 +44,7 @@ //! let renderer = librsvg::CairoRenderer::new(&handle); //! renderer.render_document( //! &cr, -//! &cairo::Rectangle { -//! x: 0.0, -//! y: 0.0, -//! width: f64::from(WIDTH), -//! height: f64::from(HEIGHT), -//! }, +//! &cairo::Rectangle::new(0.0, 0.0, f64::from(WIDTH), f64::from(HEIGHT)) //! ).unwrap(); //! //! // Loading from a static SVG asset diff --git a/src/rect.rs b/src/rect.rs index b0bbb201f936a41ae69978daf222a9c3a8fee00d..f805211ee338b81c59706053130345c66e921444 100644 --- a/src/rect.rs +++ b/src/rect.rs @@ -188,10 +188,10 @@ impl From for Rect { #[inline] fn from(r: cairo::Rectangle) -> Self { Self { - x0: r.x, - y0: r.y, - x1: r.x + r.width, - y1: r.y + r.height, + x0: r.x(), + y0: r.y(), + x1: r.x() + r.width(), + y1: r.y() + r.height(), } } } @@ -199,12 +199,7 @@ impl From for Rect { impl From for cairo::Rectangle { #[inline] fn from(r: Rect) -> Self { - Self { - x: r.x0, - y: r.y0, - width: r.x1 - r.x0, - height: r.y1 - r.y0, - } + Self::new(r.x0, r.y0, r.x1 - r.x0, r.y1 - r.y0) } } @@ -258,10 +253,10 @@ impl From for IRect { #[inline] fn from(r: cairo::Rectangle) -> Self { Self { - x0: r.x.floor() as i32, - y0: r.y.floor() as i32, - x1: (r.x + r.width).ceil() as i32, - y1: (r.y + r.height).ceil() as i32, + x0: r.x().floor() as i32, + y0: r.y().floor() as i32, + x1: (r.x() + r.width()).ceil() as i32, + y1: (r.y() + r.height()).ceil() as i32, } } } @@ -269,11 +264,11 @@ impl From for IRect { impl From for cairo::Rectangle { #[inline] fn from(r: IRect) -> Self { - Self { - x: f64::from(r.x0), - y: f64::from(r.y0), - width: f64::from(r.x1 - r.x0), - height: f64::from(r.y1 - r.y0), - } + Self::new( + f64::from(r.x0), + f64::from(r.y0), + f64::from(r.x1 - r.x0), + f64::from(r.y1 - r.y0), + ) } } diff --git a/src/surface_utils/shared_surface.rs b/src/surface_utils/shared_surface.rs index dc4bc45e4ba657bbd0a3259c93999718f0232dc8..0bd74353434042ed314579d39b7dad01143194f3 100644 --- a/src/surface_utils/shared_surface.rs +++ b/src/surface_utils/shared_surface.rs @@ -410,7 +410,7 @@ impl ImageSurface { let cr = cairo::Context::new(&output_surface)?; let r = cairo::Rectangle::from(bounds); - cr.rectangle(r.x, r.y, r.width, r.height); + cr.rectangle(r.x(), r.y(), r.width(), r.height()); cr.clip(); cr.set_source_surface(&self.surface, 0f64, 0f64)?; @@ -434,7 +434,7 @@ impl ImageSurface { { let cr = cairo::Context::new(&output_surface)?; let r = cairo::Rectangle::from(bounds); - cr.rectangle(r.x, r.y, r.width, r.height); + cr.rectangle(r.x(), r.y(), r.width(), r.height()); cr.clip(); cr.scale(x, y); @@ -994,7 +994,7 @@ impl ImageSurface { if color.alpha > 0 { let cr = cairo::Context::new(&output_surface)?; let r = cairo::Rectangle::from(bounds); - cr.rectangle(r.x, r.y, r.width, r.height); + cr.rectangle(r.x(), r.y(), r.width(), r.height()); cr.clip(); cr.set_source_rgba( @@ -1028,7 +1028,7 @@ impl ImageSurface { { let cr = cairo::Context::new(&output_surface)?; let r = cairo::Rectangle::from(output_bounds); - cr.rectangle(r.x, r.y, r.width, r.height); + cr.rectangle(r.x(), r.y(), r.width(), r.height()); cr.clip(); self.set_as_source_surface(&cr, dx, dy)?; @@ -1053,7 +1053,7 @@ impl ImageSurface { if rect.is_none() || !rect.unwrap().is_empty() { let cr = cairo::Context::new(&output_surface)?; let r = cairo::Rectangle::from(bounds); - cr.rectangle(r.x, r.y, r.width, r.height); + cr.rectangle(r.x(), r.y(), r.width(), r.height()); cr.clip(); image.set_as_source_surface(&cr, 0f64, 0f64)?; @@ -1116,7 +1116,7 @@ impl ImageSurface { ptn.set_matrix(mat); let r = cairo::Rectangle::from(bounds); - cr.rectangle(r.x, r.y, r.width, r.height); + cr.rectangle(r.x(), r.y(), r.width(), r.height()); cr.clip(); cr.set_source(&ptn)?; @@ -1143,7 +1143,7 @@ impl ImageSurface { { let cr = cairo::Context::new(&output_surface)?; let r = cairo::Rectangle::from(bounds); - cr.rectangle(r.x, r.y, r.width, r.height); + cr.rectangle(r.x(), r.y(), r.width(), r.height()); cr.clip(); self.set_as_source_surface(&cr, 0.0, 0.0)?; diff --git a/src/text.rs b/src/text.rs index 6115d09a005ee37e8869a4729e4739edc8dfb8c4..7b642975842188772d05afd99bbc5bf25b532248 100644 --- a/src/text.rs +++ b/src/text.rs @@ -446,7 +446,7 @@ impl PositionedSpan { let stroke = Stroke::new(&self.values, ¶ms); - let gravity = layout.context().unwrap().gravity(); + let gravity = layout.context().gravity(); let bbox = compute_text_box(&layout, x, y, layout_context.transform, gravity); @@ -1206,7 +1206,7 @@ fn create_pango_layout( create_pango_context(&layout_context.font_options, &layout_context.transform); if let XmlLang(Some(ref lang)) = props.xml_lang { - pango_context.set_language(&pango::Language::from_string(lang.as_str())); + pango_context.set_language(Some(&pango::Language::from_string(lang.as_str()))); } pango_context.set_base_gravity(pango::Gravity::from(layout_context.writing_mode)); diff --git a/tests/src/api.rs b/tests/src/api.rs index 4d099ba4daed1e38a75f05f4c60a2197bb95d30b..e4809696703138d552947022f9b13c8651211a29 100644 --- a/tests/src/api.rs +++ b/tests/src/api.rs @@ -53,12 +53,7 @@ fn render_layer() { let res = { let cr = cairo::Context::new(&output).expect("Failed to create cairo context"); - let viewport = cairo::Rectangle { - x: 100.0, - y: 100.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(100.0, 100.0, 100.0, 100.0); renderer.render_layer(&cr, Some("#bar"), &viewport) }; @@ -109,25 +104,9 @@ fn untransformed_element() { let (ink_r, logical_r) = renderer.geometry_for_element(Some("#foo")).unwrap(); - assert_eq!( - ink_r, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 40.0, - height: 50.0, - } - ); - - assert_eq!( - logical_r, - cairo::Rectangle { - x: 5.0, - y: 5.0, - width: 30.0, - height: 40.0, - } - ); + assert_eq!(ink_r, cairo::Rectangle::new(0.0, 0.0, 40.0, 50.0)); + + assert_eq!(logical_r, cairo::Rectangle::new(5.0, 5.0, 30.0, 40.0)); /* Rendering */ @@ -135,12 +114,7 @@ fn untransformed_element() { let res = { let cr = cairo::Context::new(&output).expect("Failed to create cairo context"); - let viewport = cairo::Rectangle { - x: 100.0, - y: 100.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(100.0, 100.0, 100.0, 100.0); renderer.render_element(&cr, Some("#foo"), &viewport) }; @@ -191,12 +165,7 @@ fn set_stylesheet() { let res = { let cr = cairo::Context::new(&output).expect("Failed to create cairo context"); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0); renderer.render_document(&cr, &viewport) }; @@ -239,12 +208,7 @@ fn text_doesnt_leave_points_in_current_path() { assert!(!cr.has_current_point().unwrap()); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0); renderer.render_document(&cr, &viewport).unwrap(); diff --git a/tests/src/bugs.rs b/tests/src/bugs.rs index 2f5927df2c880fbddb2349c1667b87185899a618..d268b4f2e165dd3139f4171cacab52733fdd7f4f 100644 --- a/tests/src/bugs.rs +++ b/tests/src/bugs.rs @@ -29,12 +29,7 @@ fn inf_width() { &svg, SurfaceSize(150, 150), |cr| cr.translate(50.0, 50.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 50.0, - height: 50.0, - }, + cairo::Rectangle::new(0.0, 0.0, 50.0, 50.0), ) .unwrap(); } @@ -57,12 +52,7 @@ fn nonexistent_image_shouldnt_cancel_rendering() { &svg, SurfaceSize(50, 50), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 50.0, - height: 50.0, - }, + cairo::Rectangle::new(0.0, 0.0, 50.0, 50.0), ) .unwrap(); @@ -106,12 +96,7 @@ fn href_attribute_overrides_xlink_href() { &svg, SurfaceSize(500, 500), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 500.0, - height: 500.0, - }, + cairo::Rectangle::new(0.0, 0.0, 500.0, 500.0), ) .unwrap(); @@ -147,12 +132,7 @@ fn nonexistent_filter_leaves_object_unfiltered() { &svg, SurfaceSize(500, 500), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 500.0, - height: 500.0, - }, + cairo::Rectangle::new(0.0, 0.0, 500.0, 500.0), ) .unwrap(); @@ -212,12 +192,7 @@ fn recursive_paint_servers_fallback_to_color() { &svg, SurfaceSize(200, 200), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 200.0, - height: 200.0, - }, + cairo::Rectangle::new(0.0, 0.0, 200.0, 200.0), ) .unwrap(); @@ -241,12 +216,7 @@ fn test_renders_as_empty(svg: &SvgHandle, test_name: &str) { &svg, SurfaceSize(100, 100), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }, + cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0), ) .unwrap(); @@ -336,22 +306,17 @@ fn test_text_bounds(name: &str) { let (ink_r, _) = renderer .geometry_for_layer( Some("#LabelA"), - &cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 248.0, - height: 176.0, - }, + &cairo::Rectangle::new(0.0, 0.0, 248.0, 176.0), ) .unwrap(); - assert!(ink_r.x >= 80.0 && ink_r.x < 80.1); + assert!(ink_r.x() >= 80.0 && ink_r.x() < 80.1); // This is kind of suspicious, but we don't know the actual height of the // text set at y=49 in the test SVG. However, this test is more "text // elements compute sensible bounds"; the bug #347 was that their ink_rect // was not being computed correctly at all. - assert!(ink_r.y > 48.0 && ink_r.y < 49.0); + assert!(ink_r.y() > 48.0 && ink_r.y() < 49.0); } // https://gitlab.gnome.org/GNOME/librsvg/-/issues/703 @@ -375,12 +340,7 @@ fn switch_element_should_ignore_elements_in_error() { &svg, SurfaceSize(100, 100), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }, + cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0), ) .unwrap(); @@ -438,12 +398,7 @@ fn accepted_children_inside_clip_path() { &svg, SurfaceSize(200, 200), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 200.0, - height: 200.0, - }, + cairo::Rectangle::new(0.0, 0.0, 200.0, 200.0), ) .unwrap(); @@ -491,12 +446,7 @@ fn can_draw_to_non_image_surface() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 200.0, - height: 200.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 200.0, 200.0); let output = cairo::RecordingSurface::create(cairo::Content::ColorAlpha, Some(viewport)).unwrap(); diff --git a/tests/src/errors.rs b/tests/src/errors.rs index def44f9f5626ae5859b16eb20646defec24c0029..d98eeb67c9c1aea9600be33acf6f463157e9a602 100644 --- a/tests/src/errors.rs +++ b/tests/src/errors.rs @@ -37,15 +37,9 @@ fn rendering_instancing_limit(name: &str) { // Note that at least 515-patttern-billion-laughs.svg requires a viewport of this size // or bigger; a smaller one causes the recursive patterns to get so small that they // are culled out, and so the document doesn't reach the instancing limit. - match CairoRenderer::new(&handle).render_document( - &cr, - &cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 500.0, - height: 500.0, - }, - ) { + match CairoRenderer::new(&handle) + .render_document(&cr, &cairo::Rectangle::new(0.0, 0.0, 500.0, 500.0)) + { Ok(_) => (), Err(RenderingError::LimitExceeded(ImplementationLimit::TooManyReferencedElements)) => (), _ => panic!("unexpected error code"), diff --git a/tests/src/filters.rs b/tests/src/filters.rs index c7fdb7602ead66f53698efcc84afe641a694e482..f756a7815a2f30d5346224be65288fd5bc80328f 100644 --- a/tests/src/filters.rs +++ b/tests/src/filters.rs @@ -26,12 +26,7 @@ fn invalid_filter_reference_cancels_filter_chain() { &svg, SurfaceSize(400, 400), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 400.0, - height: 400.0, - }, + cairo::Rectangle::new(0.0, 0.0, 400.0, 400.0), ) .unwrap(); @@ -76,12 +71,7 @@ fn non_filter_reference_cancels_filter_chain() { &svg, SurfaceSize(400, 400), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 400.0, - height: 400.0, - }, + cairo::Rectangle::new(0.0, 0.0, 400.0, 400.0), ) .unwrap(); diff --git a/tests/src/geometries.rs b/tests/src/geometries.rs index 0c25ebce412bc7042f5c1ea77b480bd0a598bbb7..db1d2cc103e5e3e9eb8bc0664fdcc6b793e46a87 100644 --- a/tests/src/geometries.rs +++ b/tests/src/geometries.rs @@ -99,12 +99,7 @@ fn test(svg_filename: &str) { geom: Rect::from(*expected), }; - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: svg_width, - height: svg_height, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, svg_width, svg_height); let (geometry, _) = renderer .geometry_for_layer(Some(id), &viewport) diff --git a/tests/src/intrinsic_dimensions.rs b/tests/src/intrinsic_dimensions.rs index 01f0704a1510213d36b475d91538bedef979e7dd..e7ab495471af59f56b8dd7bfb6b56e69696694f5 100644 --- a/tests/src/intrinsic_dimensions.rs +++ b/tests/src/intrinsic_dimensions.rs @@ -38,12 +38,7 @@ fn has_intrinsic_dimensions() { IntrinsicDimensions { width: Length::new(10.0, LengthUnit::Cm), height: Length::new(20.0, LengthUnit::Px), - vbox: Some(cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 200.0, - }), + vbox: Some(cairo::Rectangle::new(0.0, 0.0, 100.0, 200.0)), } ); } @@ -112,21 +107,11 @@ fn root_geometry_with_percent_viewport() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0); let (ink_r, logical_r) = renderer.geometry_for_layer(None, &viewport).unwrap(); - let rect = cairo::Rectangle { - x: 10.0, - y: 20.0, - width: 30.0, - height: 40.0, - }; + let rect = cairo::Rectangle::new(10.0, 20.0, 30.0, 40.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -144,21 +129,11 @@ fn layer_geometry_with_offset_viewport() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 100.0, - y: 100.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(100.0, 100.0, 100.0, 100.0); let (ink_r, logical_r) = renderer.geometry_for_layer(None, &viewport).unwrap(); - let rect = cairo::Rectangle { - x: 110.0, - y: 120.0, - width: 30.0, - height: 40.0, - }; + let rect = cairo::Rectangle::new(110.0, 120.0, 30.0, 40.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -176,21 +151,11 @@ fn layer_geometry_with_viewbox_and_offset_viewport() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 100.0, - y: 100.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(100.0, 100.0, 100.0, 100.0); let (ink_r, logical_r) = renderer.geometry_for_layer(None, &viewport).unwrap(); - let rect = cairo::Rectangle { - x: 110.0, - y: 120.0, - width: 30.0, - height: 40.0, - }; + let rect = cairo::Rectangle::new(110.0, 120.0, 30.0, 40.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -208,21 +173,11 @@ fn layer_geometry_with_no_width_height() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 100.0, - y: 100.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(100.0, 100.0, 100.0, 100.0); let (ink_r, logical_r) = renderer.geometry_for_layer(None, &viewport).unwrap(); - let rect = cairo::Rectangle { - x: 105.0, - y: 110.0, - width: 15.0, - height: 20.0, - }; + let rect = cairo::Rectangle::new(105.0, 110.0, 15.0, 20.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -240,24 +195,14 @@ fn layer_geometry_with_no_intrinsic_dimensions() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 100.0, - y: 100.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(100.0, 100.0, 100.0, 100.0); let (ink_r, logical_r) = renderer.geometry_for_layer(None, &viewport).unwrap(); // The SVG document above has no width/height nor viewBox, which means it should // start with an identity transform for its coordinate space. Since the viewport // is just offset by (100, 100), this just translates the coordinates of the . - let rect = cairo::Rectangle { - x: 210.0, - y: 220.0, - width: 50.0, - height: 40.0, - }; + let rect = cairo::Rectangle::new(210.0, 220.0, 50.0, 40.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -275,23 +220,13 @@ fn layer_geometry_with_percentage_viewport() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 100.0, - y: 100.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(100.0, 100.0, 100.0, 100.0); let (ink_r, logical_r) = renderer.geometry_for_layer(None, &viewport).unwrap(); // Lack of viewBox means we use an identity transform, so the is just // offset by (100, 100) because of the viewport. - let rect = cairo::Rectangle { - x: 110.0, - y: 120.0, - width: 50.0, - height: 40.0, - }; + let rect = cairo::Rectangle::new(110.0, 120.0, 50.0, 40.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -309,23 +244,13 @@ fn layer_geometry_with_percent_viewport() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0); let (ink_r, logical_r) = renderer .geometry_for_layer(Some("#foo"), &viewport) .unwrap(); - let rect = cairo::Rectangle { - x: 10.0, - y: 20.0, - width: 30.0, - height: 40.0, - }; + let rect = cairo::Rectangle::new(10.0, 20.0, 30.0, 40.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -344,23 +269,13 @@ fn layer_geometry_viewport_viewbox() { let renderer = CairoRenderer::new(&svg); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 400.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 100.0, 400.0); let (ink_r, logical_r) = renderer .geometry_for_layer(Some("#two"), &viewport) .unwrap(); - let rect = cairo::Rectangle { - x: 0.0, - y: 200.0, - width: 100.0, - height: 200.0, - }; + let rect = cairo::Rectangle::new(0.0, 200.0, 100.0, 200.0); assert_eq!((ink_r, logical_r), (rect, rect)); } @@ -374,12 +289,7 @@ fn layer_geometry_for_nonexistent_element() { ) .unwrap(); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0); let renderer = CairoRenderer::new(&svg); @@ -398,12 +308,7 @@ fn layer_geometry_for_invalid_id() { ) .unwrap(); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0); let renderer = CairoRenderer::new(&svg); assert!(matches!( @@ -437,12 +342,7 @@ fn render_to_viewport_with_different_size() { &svg, SurfaceSize(128, 128), |_cr| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 128.0, - height: 128.0, - }, + cairo::Rectangle::new(0.0, 0.0, 128.0, 128.0), ) .unwrap(); @@ -478,12 +378,7 @@ fn render_to_offsetted_viewport() { &svg, SurfaceSize(100, 100), |_cr| (), - cairo::Rectangle { - x: 10.0, - y: 20.0, - width: 48.0, - height: 48.0, - }, + cairo::Rectangle::new(10.0, 20.0, 48.0, 48.0), ) .unwrap(); @@ -521,12 +416,7 @@ fn render_to_viewport_with_transform() { &svg, SurfaceSize(100, 100), |cr| cr.translate(10.0, 20.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 48.0, - height: 48.0, - }, + cairo::Rectangle::new(0.0, 0.0, 48.0, 48.0), ) .unwrap(); @@ -571,12 +461,7 @@ fn clip_on_transformed_viewport() { &svg, SurfaceSize(200, 200), |cr| cr.translate(50.0, 50.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }, + cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0), ) .unwrap(); @@ -637,12 +522,7 @@ fn mask_on_transformed_viewport() { &svg, SurfaceSize(200, 200), |cr| cr.translate(50.0, 50.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }, + cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0), ) .unwrap(); diff --git a/tests/src/legacy_sizing.rs b/tests/src/legacy_sizing.rs index 3446aba378d379e69a87a9ffcc30ed31856358f5..dd1474fd593c550252b03803b584c7eca56218bc 100644 --- a/tests/src/legacy_sizing.rs +++ b/tests/src/legacy_sizing.rs @@ -18,18 +18,8 @@ fn just_viewbox_uses_viewbox_size() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 200.0, - }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 200.0, - } + cairo::Rectangle::new(0.0, 0.0, 100.0, 200.0), + cairo::Rectangle::new(0.0, 0.0, 100.0, 200.0), ) ); } @@ -50,18 +40,8 @@ fn no_intrinsic_size_uses_element_geometries() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 10.0, - y: 20.0, - width: 30.0, - height: 40.0, - }, - cairo::Rectangle { - x: 10.0, - y: 20.0, - width: 30.0, - height: 40.0, - } + cairo::Rectangle::new(10.0, 20.0, 30.0, 40.0), + cairo::Rectangle::new(10.0, 20.0, 30.0, 40.0), ) ); } @@ -80,18 +60,8 @@ fn hundred_percent_width_height_uses_viewbox() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 200.0, - }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 200.0, - } + cairo::Rectangle::new(0.0, 0.0, 100.0, 200.0), + cairo::Rectangle::new(0.0, 0.0, 100.0, 200.0), ) ); } @@ -112,18 +82,8 @@ fn hundred_percent_width_height_no_viewbox_uses_element_geometries() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 10.0, - y: 20.0, - width: 30.0, - height: 40.0, - }, - cairo::Rectangle { - x: 10.0, - y: 20.0, - width: 30.0, - height: 40.0, - } + cairo::Rectangle::new(10.0, 20.0, 30.0, 40.0), + cairo::Rectangle::new(10.0, 20.0, 30.0, 40.0), ) ); } @@ -153,18 +113,8 @@ fn width_and_viewbox_preserves_aspect_ratio() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 60.0, - height: 80.0, - }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 60.0, - height: 80.0, - } + cairo::Rectangle::new(0.0, 0.0, 60.0, 80.0), + cairo::Rectangle::new(0.0, 0.0, 60.0, 80.0), ) ); } @@ -188,18 +138,8 @@ fn height_and_viewbox_preserves_aspect_ratio() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 60.0, - height: 80.0, - }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 60.0, - height: 80.0, - } + cairo::Rectangle::new(0.0, 0.0, 60.0, 80.0), + cairo::Rectangle::new(0.0, 0.0, 60.0, 80.0), ) ); } @@ -220,18 +160,8 @@ fn zero_width_vbox() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 0.0, - height: 0.0, - }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 0.0, - height: 0.0, - } + cairo::Rectangle::new(0.0, 0.0, 0.0, 0.0), + cairo::Rectangle::new(0.0, 0.0, 0.0, 0.0) ) ); } @@ -252,18 +182,8 @@ fn zero_height_vbox() { .legacy_layer_geometry(None) .unwrap(), ( - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 0.0, - height: 0.0, - }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 0.0, - height: 0.0, - } + cairo::Rectangle::new(0.0, 0.0, 0.0, 0.0), + cairo::Rectangle::new(0.0, 0.0, 0.0, 0.0) ) ); } diff --git a/tests/src/primitive_geometries.rs b/tests/src/primitive_geometries.rs index c544f43df8590005414ccf3f37d0ed9866c1b726..3a9f2391576c929c626c2f8d653988ba49278181 100644 --- a/tests/src/primitive_geometries.rs +++ b/tests/src/primitive_geometries.rs @@ -122,12 +122,7 @@ fn test(svg_filename: &str, geometries_filename: &str) { for (id, expected) in geometries.0.iter() { let expected = Element::from_element_geometry(id, expected); - let viewport = cairo::Rectangle { - x: 0.0, - y: 0.0, - width: svg_width, - height: svg_height, - }; + let viewport = cairo::Rectangle::new(0.0, 0.0, svg_width, svg_height); let (ink_rect, logical_rect) = renderer .geometry_for_layer(Some(id), &viewport) diff --git a/tests/src/primitives.rs b/tests/src/primitives.rs index e1564bf803772ad48df2929020b0d4dbbcc7f7de..b12906f4629131aeebd95c2fbbbb3b2a4fcd72c4 100644 --- a/tests/src/primitives.rs +++ b/tests/src/primitives.rs @@ -21,12 +21,7 @@ fn simple_opacity_with_transform() { &svg, SurfaceSize(150, 150), |cr| cr.translate(50.0, 50.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 50.0, - height: 50.0, - }, + cairo::Rectangle::new(0.0, 0.0, 50.0, 50.0), ) .unwrap(); @@ -63,12 +58,7 @@ fn simple_opacity_with_offset_viewport() { &svg, SurfaceSize(150, 150), |_cr| (), - cairo::Rectangle { - x: 50.0, - y: 50.0, - width: 50.0, - height: 50.0, - }, + cairo::Rectangle::new(50.0, 50.0, 50.0, 50.0), ) .unwrap(); @@ -109,12 +99,7 @@ fn simple_opacity_with_scale() { cr.translate(50.0, 50.0); cr.scale(8.0, 8.0); }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 50.0, - height: 50.0, - }, + cairo::Rectangle::new(0.0, 0.0, 50.0, 50.0), ) .unwrap(); @@ -158,12 +143,7 @@ fn markers_with_scale() { |cr| { cr.scale(4.0, 4.0); }, - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 200.0, - height: 200.0, - }, + cairo::Rectangle::new(0.0, 0.0, 200.0, 200.0), ) .unwrap(); @@ -211,12 +191,7 @@ fn opacity_inside_transformed_group() { &svg, SurfaceSize(140, 140), |cr| cr.translate(20.0, 20.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }, + cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0), ) .unwrap(); @@ -258,12 +233,7 @@ fn compound_opacity() { &svg, SurfaceSize(500, 380), |cr| cr.translate(10.0, 10.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 480.0, - height: 360.0, - }, + cairo::Rectangle::new(0.0, 0.0, 480.0, 360.0), ) .unwrap(); @@ -328,12 +298,7 @@ fn nested_masks() { &svg, SurfaceSize(321 + 20, 27 + 20), |cr| cr.translate(10.0, 10.0), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 321.0, - height: 27.0, - }, + cairo::Rectangle::new(0.0, 0.0, 321.0, 27.0), ) .unwrap(); diff --git a/tests/src/reference.rs b/tests/src/reference.rs index 2234e130a61dfcf5e68ddc10834ecc502179b99b..46fb9dc2e50f6aac97aecded338430594625ac6f 100644 --- a/tests/src/reference.rs +++ b/tests/src/reference.rs @@ -71,12 +71,7 @@ fn reference_test(path: &str) { renderer .render_document( &cr, - &cairo::Rectangle { - x: 0.0, - y: 0.0, - width: f64::from(width), - height: f64::from(height), - }, + &cairo::Rectangle::new(0.0, 0.0, f64::from(width), f64::from(height)), ) .unwrap(); } @@ -141,7 +136,7 @@ fn image_size(dim: IntrinsicDimensions, dpi: f64) -> (i32, i32) { (Length { length: w, unit: Percent }, Length { length: h, unit: Percent }, vbox) if w == 1.0 && h == 1.0 => { if let Some(vbox) = vbox { - (vbox.width, vbox.height) + (vbox.width(), vbox.height()) } else { panic!("SVG with percentage width/height must have a viewBox"); } diff --git a/tests/src/reference_utils.rs b/tests/src/reference_utils.rs index 69810e0de386734fa2ab81be47f148bb3f9576f8..ecb093feb5134a332834469fdb1285fcfc5b9873 100644 --- a/tests/src/reference_utils.rs +++ b/tests/src/reference_utils.rs @@ -200,12 +200,7 @@ macro_rules! test_compare_render_output { &svg, SurfaceSize(sx, sy), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: sx as f64, - height: sy as f64, - }, + cairo::Rectangle::new(0.0, 0.0, f64::from(sx), f64::from(sy)), ) .unwrap(); @@ -214,12 +209,7 @@ macro_rules! test_compare_render_output { &reference, SurfaceSize(sx, sy), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: sx as f64, - height: sy as f64, - }, + cairo::Rectangle::new(0.0, 0.0, f64::from(sx), f64::from(sy)), ) .unwrap(); @@ -278,12 +268,7 @@ macro_rules! test_svg_reference { &svg, SurfaceSize(pixels.0.ceil() as i32, pixels.1.ceil() as i32), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: pixels.0, - height: pixels.1, - }, + cairo::Rectangle::new(0.0, 0.0, pixels.0, pixels.1), ) .unwrap(); @@ -291,12 +276,7 @@ macro_rules! test_svg_reference { &reference, SurfaceSize(pixels.0.ceil() as i32, pixels.1.ceil() as i32), |_| (), - cairo::Rectangle { - x: 0.0, - y: 0.0, - width: pixels.0, - height: pixels.1, - }, + cairo::Rectangle::new(0.0, 0.0, pixels.0, pixels.1), ) .unwrap(); diff --git a/tests/src/render_crash.rs b/tests/src/render_crash.rs index f89285d326becfec08241b5a01c838b3c89752f9..c00e5005149d1c63f88c1d76f828210a57a36af8 100644 --- a/tests/src/render_crash.rs +++ b/tests/src/render_crash.rs @@ -19,13 +19,6 @@ fn render_crash(path: &str) { let cr = cairo::Context::new(&surface).expect("Failed to create a cairo context"); // We just test for crashes during rendering, and don't care about success/error. - let _ = CairoRenderer::new(&handle).render_document( - &cr, - &cairo::Rectangle { - x: 0.0, - y: 0.0, - width: 100.0, - height: 100.0, - }, - ); + let _ = CairoRenderer::new(&handle) + .render_document(&cr, &cairo::Rectangle::new(0.0, 0.0, 100.0, 100.0)); } diff --git a/tests/src/text.rs b/tests/src/text.rs index e02285236d3a2d69460a07849866f54d25bffd9f..45bb01e27145bb99a73c3d6742d3c9e390022bf4 100644 --- a/tests/src/text.rs +++ b/tests/src/text.rs @@ -83,21 +83,16 @@ test_svg_reference!( ); fn rect(x: f64, y: f64, width: f64, height: f64) -> cairo::Rectangle { - cairo::Rectangle { - x, - y, - width, - height, - } + cairo::Rectangle::new(x, y, width, height) } fn rectangle_approx_eq(a: &cairo::Rectangle, b: &cairo::Rectangle) -> bool { // FIXME: this is super fishy; shouldn't we be using 2x the epsilon against the width/height // instead of the raw coordinates? - approx_eq!(f64, a.x, b.x) - && approx_eq!(f64, a.y, b.y) - && approx_eq!(f64, a.width, b.width) - && approx_eq!(f64, a.height, b.height) + approx_eq!(f64, a.x(), b.x()) + && approx_eq!(f64, a.y(), b.y()) + && approx_eq!(f64, a.width(), b.width()) + && approx_eq!(f64, a.height(), b.height()) } // Test that the computed geometry of text layers is as expected. diff --git a/tests/src/utils.rs b/tests/src/utils.rs index fb4ad2de40f247ebc3d78f4773d777b9aee6e391..f01d1c00bead001565d62e18b047776b7db86b42 100644 --- a/tests/src/utils.rs +++ b/tests/src/utils.rs @@ -92,7 +92,7 @@ mod pango_ft2 { pango_fc_font_map_set_config(raw_font_map as *mut _, config); fontconfig::FcConfigDestroy(config); - FontMap::set_default(Some(font_map.downcast::().unwrap())); + FontMap::set_default(Some(&font_map.downcast::().unwrap())); } }