diff options
author | Bilal Elmoussaoui <belmouss@redhat.com> | 2022-10-19 16:11:59 +0200 |
---|---|---|
committer | Marge Bot <marge-bot@gnome.org> | 2022-10-25 13:59:05 +0000 |
commit | 629e583c2e3970c1c4149cc23bb4ec6887adee09 (patch) | |
tree | d1dc2b7b84befa818e0c32c838ca380251b9ec75 | |
parent | 963bdfa6f5723408bfe367adc3134568a82b5fc4 (diff) | |
download | librsvg-629e583c2e3970c1c4149cc23bb4ec6887adee09.tar.gz |
misc: Bump gtk-rs crates to 0.16.0
Part-of: <https://gitlab.gnome.org/GNOME/librsvg/-/merge_requests/760>
-rw-r--r-- | Cargo.lock | 346 | ||||
-rw-r--r-- | Cargo.toml | 20 | ||||
-rw-r--r-- | examples/proportional.rs | 7 | ||||
-rw-r--r-- | src/api.rs | 2 | ||||
-rw-r--r-- | src/bin/rsvg-convert.rs | 19 | ||||
-rw-r--r-- | src/c_api/handle.rs | 117 | ||||
-rw-r--r-- | src/c_api/pixbuf_utils.rs | 7 | ||||
-rw-r--r-- | src/c_api/sizing.rs | 10 | ||||
-rw-r--r-- | src/drawing_ctx.rs | 8 | ||||
-rw-r--r-- | src/handle.rs | 6 | ||||
-rw-r--r-- | src/lib.rs | 7 | ||||
-rw-r--r-- | src/rect.rs | 35 | ||||
-rw-r--r-- | src/surface_utils/shared_surface.rs | 14 | ||||
-rw-r--r-- | src/text.rs | 4 | ||||
-rw-r--r-- | tests/src/api.rs | 50 | ||||
-rw-r--r-- | tests/src/bugs.rs | 74 | ||||
-rw-r--r-- | tests/src/errors.rs | 12 | ||||
-rw-r--r-- | tests/src/filters.rs | 14 | ||||
-rw-r--r-- | tests/src/geometries.rs | 7 | ||||
-rw-r--r-- | tests/src/intrinsic_dimensions.rs | 168 | ||||
-rw-r--r-- | tests/src/legacy_sizing.rs | 112 | ||||
-rw-r--r-- | tests/src/primitive_geometries.rs | 7 | ||||
-rw-r--r-- | tests/src/primitives.rs | 49 | ||||
-rw-r--r-- | tests/src/reference.rs | 9 | ||||
-rw-r--r-- | tests/src/reference_utils.rs | 28 | ||||
-rw-r--r-- | tests/src/render_crash.rs | 11 | ||||
-rw-r--r-- | tests/src/text.rs | 15 | ||||
-rw-r--r-- | tests/src/utils.rs | 2 |
28 files changed, 411 insertions, 749 deletions
@@ -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", @@ -166,6 +167,12 @@ 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" @@ -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]] @@ -246,6 +253,16 @@ dependencies = [ ] [[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" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -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]] @@ -409,6 +424,50 @@ dependencies = [ ] [[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" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -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,19 +891,29 @@ 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" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -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" @@ -956,6 +1042,15 @@ dependencies = [ ] [[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" source = "registry+https://github.com/rust-lang/crates.io-index" @@ -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]] @@ -1838,6 +1934,12 @@ 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" @@ -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", @@ -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/examples/proportional.rs b/examples/proportional.rs index 9924b3ed..aefc5df9 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 { @@ -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 d4aa82fb..3a220729 100644 --- a/src/bin/rsvg-convert.rs +++ b/src/bin/rsvg-convert.rs @@ -241,6 +241,12 @@ impl Deref for Surface { } } +impl AsRef<cairo::Surface> 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 02770301..f1e65c4f 100644 --- a/src/c_api/handle.rs +++ b/src/c_api/handle.rs @@ -266,30 +266,23 @@ pub struct RsvgRectangle { impl From<cairo::Rectangle> 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<RsvgRectangle> 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<Vec<ParamSpec>> = 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::<HandleFlags>("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::<CHandle>(&[]).unwrap(); + let obj = glib::Object::new::<CHandle>(&[]); 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::<CHandle>(&[("flags", &HandleFlags::from_bits_truncate(flags))]) - .unwrap(); + let obj = glib::Object::new::<CHandle>(&[("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 a43518b6..cc0efe05 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 e0c2090a..e0c85bd1 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 fc458798..444a7582 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<TextRendering> for cairo::Antialias { impl From<cairo::Matrix> 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 8c9caed9..36de859d 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); @@ -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 b0bbb201..f805211e 100644 --- a/src/rect.rs +++ b/src/rect.rs @@ -188,10 +188,10 @@ impl From<cairo::Rectangle> 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<cairo::Rectangle> for Rect { impl From<Rect> 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<cairo::Rectangle> 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<cairo::Rectangle> for IRect { impl From<IRect> 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 dc4bc45e..0bd74353 100644 --- a/src/surface_utils/shared_surface.rs +++ b/src/surface_utils/shared_surface.rs @@ -410,7 +410,7 @@ impl ImageSurface<Shared> { 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<Shared> { { 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<Shared> { 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<Shared> { { 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<Shared> { 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<Shared> { 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<Shared> { { 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 6115d09a..7b642975 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 4d099ba4..e4809696 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 2f5927df..d268b4f2 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 def44f9f..d98eeb67 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 c7fdb760..f756a781 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 0c25ebce..db1d2cc1 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 01f0704a..e7ab4954 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 <rect>. - 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 <rect> 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 3446aba3..dd1474fd 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 c544f43d..3a9f2391 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 e1564bf8..b12906f4 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 2234e130..46fb9dc2 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 69810e0d..ecb093fe 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 f89285d3..c00e5005 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 e0228523..45bb01e2 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 fb4ad2de..f01d1c00 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::<pangocairo::FontMap>().unwrap())); + FontMap::set_default(Some(&font_map.downcast::<pangocairo::FontMap>().unwrap())); } } |