From bb521fcb823671cc5f319a1d3909b2b33acfc957 Mon Sep 17 00:00:00 2001 From: Robbert van der Helm Date: Thu, 12 Jan 2023 18:49:55 +0100 Subject: [PATCH] Upgrade Vizia for the cosmic-text changes This brings some breaking changes, and vertical positioning of text may have changed slightly. --- BREAKING_CHANGES.md | 12 + Cargo.lock | 312 ++++++++++++------ Cargo.toml | 2 +- nih_plug_vizia/Cargo.toml | 7 +- nih_plug_vizia/src/assets.rs | 16 +- nih_plug_vizia/src/editor.rs | 2 +- nih_plug_vizia/src/vizia_assets.rs | 24 +- nih_plug_vizia/src/widgets.rs | 2 +- plugins/crisp/src/editor.rs | 4 +- plugins/diopser/src/editor.rs | 4 +- plugins/diopser/src/editor/safe_mode.rs | 2 +- plugins/examples/gain_gui_vizia/src/editor.rs | 4 +- plugins/spectral_compressor/src/editor.rs | 4 +- src/wrapper/util.rs | 2 + 14 files changed, 266 insertions(+), 131 deletions(-) diff --git a/BREAKING_CHANGES.md b/BREAKING_CHANGES.md index 138e9e9f..68389762 100644 --- a/BREAKING_CHANGES.md +++ b/BREAKING_CHANGES.md @@ -6,6 +6,18 @@ new and what's changed, this document lists all breaking changes in reverse chronological order. If a new feature did not require any changes to existing code then it will not be listed here. +## [2023-01-12] + +- The Vizia dependency has been updated. This updated version uses a new text + rendering engine, so there are a couple breaking changes: + - The names for some of Vizia's fonts have changed. The constants and font + registration functions in `nih_plug_vizia::assets` and + `nih_plug_vizia::vizia_assets` still have the same name, but all uses of the + `font` CSS property and `.font()` view modifier will have to be changed. + - Metrics for rendered text have change slightly. Most notably the height and + vertical positioning of text is slightly different, so you may have to + adjust your layout slightly accordingly. + ## [2023-01-11] - `Editor::param_values_changes()` is no longer called from the audio thread and diff --git a/Cargo.lock b/Cargo.lock index 92cccba7..cd39f9a5 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -10,9 +10,9 @@ checksum = "fe438c63458706e03479442743baae6c88256498e6431708f6dfc520a26515d3" [[package]] name = "ab_glyph" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4dcdbc68024b653943864d436fe8a24b028095bc1cf91a8926f8241e4aaffe59" +checksum = "e5568a4aa5ba8adf5175c5c460b030e27d8893412976cc37bef0e4fbc16cfbba" dependencies = [ "ab_glyph_rasterizer", "owned_ttf_parser", @@ -68,6 +68,15 @@ dependencies = [ "version_check", ] +[[package]] +name = "aho-corasick" +version = "0.7.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc936419f96fa211c1b9166887b38e5e40b19958e5b895be7c1f93adec7071ac" +dependencies = [ + "memchr", +] + [[package]] name = "aliasable" version = "0.1.3" @@ -98,9 +107,9 @@ dependencies = [ [[package]] name = "anyhow" -version = "1.0.66" +version = "1.0.68" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" +checksum = "2cb2f989d18dd141ab8ae82f64d1a8cdd37e0840f73a406896cf5e99502fab61" [[package]] name = "anymap" @@ -320,9 +329,9 @@ checksum = "62af46d040ba9df09edc6528dae9d8e49f5f3e82f55b7d2ec31a733c38dbc49d" [[package]] name = "atomic_refcell" -version = "0.1.8" +version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73b5e5f48b927f04e952dedc932f31995a65a0bf65ec971c74436e51bf6e970d" +checksum = "857253367827bd9d0fd973f0ef15506a96e79e41b0ad7aa691203a4e3214f6c8" [[package]] name = "atty" @@ -330,7 +339,7 @@ version = "0.2.14" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" dependencies = [ - "hermit-abi", + "hermit-abi 0.1.19", "libc", "winapi", ] @@ -371,7 +380,7 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8" [[package]] name = "baseview" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/baseview.git?branch=feature/resize#512c3f2393d606f91963773c73cbf3ab8de5eb57" +source = "git+https://github.com/RustAudio/baseview.git?rev=7001c2521fa1a439a01967cb881b411cd75d9ee0#7001c2521fa1a439a01967cb881b411cd75d9ee0" dependencies = [ "cocoa", "core-foundation", @@ -407,7 +416,7 @@ dependencies = [ [[package]] name = "baseview" version = "0.1.0" -source = "git+https://github.com/RustAudio/baseview.git#ee156fb8840452984b5f9946635e9a35b2857c41" +source = "git+https://github.com/RustAudio/baseview.git#7001c2521fa1a439a01967cb881b411cd75d9ee0" dependencies = [ "cocoa", "core-foundation", @@ -855,6 +864,25 @@ dependencies = [ "bindgen", ] +[[package]] +name = "cosmic-text" +version = "0.6.0" +source = "git+https://github.com/pop-os/cosmic-text?rev=e00109d77f06d5a2e3057865eda3f530bc40a046#e00109d77f06d5a2e3057865eda3f530bc40a046" +dependencies = [ + "fontdb 0.10.0", + "libm", + "log", + "ouroboros", + "rangemap", + "rustybuzz 0.6.0", + "swash", + "sys-locale", + "unicode-bidi", + "unicode-linebreak", + "unicode-script", + "unicode-segmentation", +] + [[package]] name = "cpal" version = "0.14.2" @@ -1088,7 +1116,7 @@ dependencies = [ "nih_plug_vizia", "open", "realfft", - "semver 1.0.14", + "semver 1.0.16", "triple_buffer", ] @@ -1284,7 +1312,7 @@ dependencies = [ [[package]] name = "femtovg" version = "0.4.0" -source = "git+https://github.com/femtovg/femtovg?rev=20dc7ef142004736f1ba1c626dd9c5bb556dde14#20dc7ef142004736f1ba1c626dd9c5bb556dde14" +source = "git+https://github.com/rhelmot/femtovg?rev=e1f3f05cc050c0ed69ca702b368bb5d4eb2cabff#e1f3f05cc050c0ed69ca702b368bb5d4eb2cabff" dependencies = [ "bitflags", "fnv", @@ -1410,6 +1438,17 @@ dependencies = [ "ttf-parser 0.12.3", ] +[[package]] +name = "fontdb" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8131752b3f3b876a20f42b3d08233ad177d6e7ec6d18aaa6954489a201071be5" +dependencies = [ + "log", + "memmap2 0.5.8", + "ttf-parser 0.17.1", +] + [[package]] name = "foreign-types" version = "0.3.2" @@ -1664,9 +1703,9 @@ dependencies = [ [[package]] name = "glob" -version = "0.3.0" +version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9b919933a397b79c37e33b77bb2aa3dc8eb6e165ad809e58ff75bc7db2e34574" +checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" [[package]] name = "gloo-timers" @@ -1890,6 +1929,15 @@ dependencies = [ "libc", ] +[[package]] +name = "hermit-abi" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee512640fe35acbfb4bb779db6f0d80704c2cacfa2e39b601ef3e3f47d1ae4c7" +dependencies = [ + "libc", +] + [[package]] name = "hexf-parse" version = "0.2.1" @@ -2110,9 +2158,9 @@ checksum = "b71991ff56294aa922b450139ee08b3bfc70982c6b2c7562771375cf73542dd4" [[package]] name = "itoa" -version = "1.0.4" +version = "1.0.5" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4217ad341ebadf8d8e724e264f13e593e0648f5b3e94b3896a5df283be015ecc" +checksum = "fad582f4b9e86b6caa621cabeb0963332d92eea04729ab12892c2533951e6440" [[package]] name = "jack" @@ -2257,9 +2305,9 @@ checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" [[package]] name = "libc" -version = "0.2.138" +version = "0.2.139" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" +checksum = "201de327520df007757c1f0adce6e827fe8562fbc28bfd9c15571c66ca1f5f79" [[package]] name = "libloading" @@ -2271,6 +2319,12 @@ dependencies = [ "winapi", ] +[[package]] +name = "libm" +version = "0.2.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "348108ab3fba42ec82ff6e9564fc4ca0247bdccdc68dd8af9764bbc79c3c8ffb" + [[package]] name = "linked-hash-map" version = "0.5.6" @@ -2492,7 +2546,7 @@ dependencies = [ [[package]] name = "morphorm" version = "0.3.0" -source = "git+https://github.com/vizia/morphorm?rev=c14e888b1d66719fc3f13ccdb1ea01a10368ef9e#c14e888b1d66719fc3f13ccdb1ea01a10368ef9e" +source = "git+https://github.com/vizia/morphorm?rev=3d74358fe976249738f58724854270aa2f0fdb4a#3d74358fe976249738f58724854270aa2f0fdb4a" dependencies = [ "bitflags", "smallvec", @@ -2613,7 +2667,7 @@ dependencies = [ "atomic_float", "atomic_refcell", "backtrace", - "baseview 0.1.0 (git+https://github.com/robbert-vdh/baseview.git?branch=feature/resize)", + "baseview 0.1.0 (git+https://github.com/RustAudio/baseview.git?rev=7001c2521fa1a439a01967cb881b411cd75d9ee0)", "bitflags", "cfg-if 1.0.0", "clap", @@ -2687,7 +2741,7 @@ dependencies = [ name = "nih_plug_vizia" version = "0.0.0" dependencies = [ - "baseview 0.1.0 (git+https://github.com/robbert-vdh/baseview.git?branch=feature/resize)", + "baseview 0.1.0 (git+https://github.com/RustAudio/baseview.git?rev=7001c2521fa1a439a01967cb881b411cd75d9ee0)", "crossbeam", "nih_plug", "nih_plug_assets", @@ -2752,9 +2806,9 @@ checksum = "2bf50223579dc7cdcfb3bfcacf7069ff68243f8c363f62ffa99cf000a6b9c451" [[package]] name = "nom" -version = "7.1.1" +version = "7.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8903e5a29a317527874d0402f867152a3d21c908bb0b933e416c65e301d4c36" +checksum = "e5507769c4919c998e69e49c839d9dc6e693ede4cc4290d6ad8b41d4f09c548c" dependencies = [ "memchr", "minimal-lexical", @@ -2834,11 +2888,11 @@ dependencies = [ [[package]] name = "num_cpus" -version = "1.14.0" +version = "1.15.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6058e64324c71e02bc2b150e4f3bc8286db6c83092132ffa3f6b1eab0f9def5" +checksum = "0fac9e2da13b5eb447a6ce3d392f23a29d8694bff781bf03a16cd9ac8697593b" dependencies = [ - "hermit-abi", + "hermit-abi 0.2.6", "libc", ] @@ -2913,9 +2967,9 @@ dependencies = [ [[package]] name = "object" -version = "0.30.0" +version = "0.30.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "239da7f290cfa979f43f85a8efeee9a8a76d0827c356d37f9d3d7254d6b537fb" +checksum = "2b8c786513eb403643f2a88c244c2aaa270ef2153f55094587d0c48a3cf22a83" dependencies = [ "memchr", ] @@ -2945,9 +2999,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.16.0" +version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" +checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" [[package]] name = "open" @@ -3008,11 +3062,11 @@ dependencies = [ [[package]] name = "owned_ttf_parser" -version = "0.17.1" +version = "0.18.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "18904d3c65493a9f0d7542293d1a7f69bfdc309a6b9ef4f46dc3e58b0577edc5" +checksum = "2a5f3c7ca08b6879e7965fb25e24d1f5eeb32ea73f9ad99b3854778a38c57e93" dependencies = [ - "ttf-parser 0.17.1", + "ttf-parser 0.18.1", ] [[package]] @@ -3063,7 +3117,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" dependencies = [ "lock_api", - "parking_lot_core 0.9.5", + "parking_lot_core 0.9.6", ] [[package]] @@ -3082,9 +3136,9 @@ dependencies = [ [[package]] name = "parking_lot_core" -version = "0.9.5" +version = "0.9.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7ff9f3fef3968a3ec5945535ed654cb38ff72d7495a25619e2247fb15a2ed9ba" +checksum = "ba1ef8814b5c993410bb3adfad7a5ed269563e4a2f90c41f5d85be7fb47133bf" dependencies = [ "cfg-if 1.0.0", "libc", @@ -3132,9 +3186,9 @@ checksum = "478c572c3d73181ff3c2539045f6eb99e5491218eae919370993b890cdbdd98e" [[package]] name = "pest" -version = "2.5.1" +version = "2.5.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc8bed3549e0f9b0a2a78bf7c0018237a2cdf085eecbbc048e52612438e4e9d0" +checksum = "4257b4a04d91f7e9e6290be5d3da4804dd5784fafde3a497d73eb2b4a158c30a" dependencies = [ "thiserror", "ucd-trie", @@ -3323,15 +3377,15 @@ dependencies = [ [[package]] name = "proc-macro-hack" -version = "0.5.19" +version = "0.5.20+deprecated" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbf0c48bc1d91375ae5c3cd81e3722dff1abcf81a30960240640d223f59fe0e5" +checksum = "dc375e1527247fe1a97d8b7156678dfe7c1af2fc075c9a4db3690ecd2a148068" [[package]] name = "proc-macro2" -version = "1.0.47" +version = "1.0.49" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" +checksum = "57a8eca9f9c4ffde41714334dee777596264c7825420f521abc92b5b5deb63a5" dependencies = [ "unicode-ident", ] @@ -3370,9 +3424,9 @@ dependencies = [ [[package]] name = "quote" -version = "1.0.21" +version = "1.0.23" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +checksum = "8856d8364d252a14d474036ea1358d63c9e6965c8e5c1885c18f73d70bff9c7b" dependencies = [ "proc-macro2", ] @@ -3473,6 +3527,12 @@ version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "63e935c45e09cc6dcf00d2f0b2d630a58f4095320223d47fc68918722f0538b6" +[[package]] +name = "rangemap" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b9283c6b06096b47afc7109834fdedab891175bb5241ee5d4f7d2546549f263" + [[package]] name = "raw-window-handle" version = "0.4.3" @@ -3559,10 +3619,12 @@ dependencies = [ [[package]] name = "regex" -version = "1.7.0" +version = "1.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e076559ef8e241f2ae3479e36f97bd5741c0330689e217ad51ce2c76808b868a" +checksum = "48aaa5748ba571fb95cd2c85c09f629215d3a6ece942baa100950af03a34f733" dependencies = [ + "aho-corasick", + "memchr", "regex-syntax", ] @@ -3578,6 +3640,12 @@ version = "0.7.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1382d1f0a252c4bf97dc20d979a2fdd05b024acd7c2ed0f7595d7817666a157" +[[package]] +name = "replace_with" +version = "0.1.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e3a8614ee435691de62bcffcf4a66d91b3594bf1428a5722e79103249a095690" + [[package]] name = "resvg" version = "0.18.0" @@ -3690,6 +3758,7 @@ checksum = "ab9e34ecf6900625412355a61bda0bd68099fe674de707c67e5e4aed2c05e489" dependencies = [ "bitflags", "bytemuck", + "libm", "smallvec", "ttf-parser 0.17.1", "unicode-bidi-mirroring", @@ -3700,9 +3769,9 @@ dependencies = [ [[package]] name = "ryu" -version = "1.0.11" +version = "1.0.12" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" +checksum = "7b4b9743ed687d4b4bcedf9ff5eaa7398495ae14e61cba0a295704edbc7decde" [[package]] name = "safe_arch" @@ -3787,9 +3856,9 @@ dependencies = [ [[package]] name = "semver" -version = "1.0.14" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e25dfac463d778e353db5be2449d1cce89bd6fd23c9f1ea21310ce6e5a1b29c4" +checksum = "58bc9567378fc7690d6b2addae4e60ac2eeea07becb2c64b9f218b53865cba2a" [[package]] name = "semver-parser" @@ -3808,18 +3877,18 @@ dependencies = [ [[package]] name = "serde" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "97fed41fc1a24994d044e6db6935e69511a1153b52c15eb42493b26fa87feba0" +checksum = "bb7d1f0d3021d347a83e556fc4683dea2ea09d87bccdf88ff5c12545d89d5efb" dependencies = [ "serde_derive", ] [[package]] name = "serde_derive" -version = "1.0.151" +version = "1.0.152" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "255abe9a125a985c05190d687b320c12f9b1f0b99445e608c21ba0782c719ad8" +checksum = "af487d118eecd09402d70a5d72551860e788df87b464af30e5ea6a38c75c541e" dependencies = [ "proc-macro2", "quote", @@ -3828,11 +3897,11 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.89" +version = "1.0.91" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" +checksum = "877c235533714907a8c2464236f5c4b2a17262ef1bd71f38f35ea592c8da6883" dependencies = [ - "itoa 1.0.4", + "itoa 1.0.5", "ryu", "serde", ] @@ -4149,10 +4218,20 @@ dependencies = [ ] [[package]] -name = "syn" -version = "1.0.105" +name = "swash" +version = "0.1.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" +checksum = "8bb18e5888a9b5f0a89ea3ebdf6883dc479347ca9183b6c51a8f9cf2041f23a0" +dependencies = [ + "yazi", + "zeno", +] + +[[package]] +name = "syn" +version = "1.0.107" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f4064b5b16e03ae50984a5a8ed5d4f8803e6bc1fd170a3cda91a1be4b18e3f5" dependencies = [ "proc-macro2", "quote", @@ -4189,18 +4268,18 @@ checksum = "222a222a5bfe1bba4a77b45ec488a741b3cb8872e5e499451fd7d0129c9c7c3d" [[package]] name = "thiserror" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10deb33631e3c9018b9baf9dcbbc4f737320d2b576bac10f6aefa048fa407e3e" +checksum = "6a9cd18aa97d5c45c6603caea1da6628790b37f7a34b6ca89522331c5180fed0" dependencies = [ "thiserror-impl", ] [[package]] name = "thiserror-impl" -version = "1.0.37" +version = "1.0.38" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "982d17546b47146b28f7c22e3d08465f6b8903d0ea13c1660d9d84a6e7adcdbb" +checksum = "1fb327af4685e4d03fa8cbcf1716380da910eeb2bb8be417e7f9fd3fb164f36f" dependencies = [ "proc-macro2", "quote", @@ -4213,7 +4292,7 @@ version = "0.3.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a561bf4617eebd33bca6434b988f39ed798e527f51a1e797d0ee4f61c0a38376" dependencies = [ - "itoa 1.0.4", + "itoa 1.0.5", "libc", "num_threads", "serde", @@ -4261,9 +4340,9 @@ dependencies = [ [[package]] name = "tokio" -version = "1.23.0" +version = "1.24.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eab6d665857cc6ca78d6e80303a02cea7a7851e85dfbd77cbdc09bd129f1ef46" +checksum = "1d9f76183f91ecfb55e1d7d5602bd1d979e38a3a522fe900241cf195624d67ae" dependencies = [ "autocfg", "num_cpus", @@ -4331,6 +4410,12 @@ version = "0.17.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "375812fa44dab6df41c195cd2f7fecb488f6c09fbaafb62807488cefab642bff" +[[package]] +name = "ttf-parser" +version = "0.18.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0609f771ad9c6155384897e1df4d948e692667cc0588548b68eb44d052b27633" + [[package]] name = "twox-hash" version = "1.6.3" @@ -4407,9 +4492,19 @@ checksum = "2281c8c1d221438e373249e065ca4989c4c36952c211ff21a0ee91c44a3869e7" [[package]] name = "unicode-ident" -version = "1.0.5" +version = "1.0.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" +checksum = "84a22b9f218b40614adcb3f4ff08b703773ad44fa9423e4e0d346d5db86e4ebc" + +[[package]] +name = "unicode-linebreak" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5faade31a542b8b35855fff6e8def199853b2da8da256da52f52f1316ee3137" +dependencies = [ + "hashbrown", + "regex", +] [[package]] name = "unicode-script" @@ -4445,7 +4540,7 @@ dependencies = [ "data-url", "flate2", "float-cmp", - "fontdb", + "fontdb 0.6.2", "kurbo", "log", "pico-args", @@ -4490,7 +4585,7 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" [[package]] name = "vizia" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ "vizia_baseview", "vizia_core", @@ -4500,9 +4595,9 @@ dependencies = [ [[package]] name = "vizia_baseview" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ - "baseview 0.1.0 (git+https://github.com/robbert-vdh/baseview.git?branch=feature/resize)", + "baseview 0.1.0 (git+https://github.com/RustAudio/baseview.git?rev=7001c2521fa1a439a01967cb881b411cd75d9ee0)", "femtovg", "lazy_static", "raw-window-handle 0.4.3", @@ -4514,10 +4609,11 @@ dependencies = [ [[package]] name = "vizia_core" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ "bitflags", "copypasta 0.8.1", + "cosmic-text", "cssparser", "femtovg", "fluent-bundle", @@ -4527,6 +4623,9 @@ dependencies = [ "image 0.24.5", "instant", "morphorm", + "ouroboros", + "replace_with", + "swash", "sys-locale", "unic-langid", "unicode-bidi", @@ -4542,7 +4641,7 @@ dependencies = [ [[package]] name = "vizia_derive" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ "proc-macro2", "quote", @@ -4552,12 +4651,12 @@ dependencies = [ [[package]] name = "vizia_id" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" [[package]] name = "vizia_input" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ "bitflags", "keyboard-types", @@ -4567,7 +4666,7 @@ dependencies = [ [[package]] name = "vizia_storage" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ "morphorm", "vizia_id", @@ -4576,7 +4675,7 @@ dependencies = [ [[package]] name = "vizia_window" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ "morphorm", "vizia_input", @@ -4585,7 +4684,7 @@ dependencies = [ [[package]] name = "vizia_winit" version = "0.1.0" -source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#9bc55a4ba309cff64dcf0192358842e73d40be46" +source = "git+https://github.com/robbert-vdh/vizia.git?branch=patched#02890d98efcafa549079a4191e6684e29a2a60f2" dependencies = [ "console_error_panic_hook", "copypasta 0.8.1", @@ -5040,19 +5139,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" dependencies = [ "windows_aarch64_gnullvm", - "windows_aarch64_msvc 0.42.0", - "windows_i686_gnu 0.42.0", - "windows_i686_msvc 0.42.0", - "windows_x86_64_gnu 0.42.0", + "windows_aarch64_msvc 0.42.1", + "windows_i686_gnu 0.42.1", + "windows_i686_msvc 0.42.1", + "windows_x86_64_gnu 0.42.1", "windows_x86_64_gnullvm", - "windows_x86_64_msvc 0.42.0", + "windows_x86_64_msvc 0.42.1", ] [[package]] name = "windows_aarch64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" +checksum = "8c9864e83243fdec7fc9c5444389dcbbfd258f745e7853198f365e3c4968a608" [[package]] name = "windows_aarch64_msvc" @@ -5074,9 +5173,9 @@ checksum = "2623277cb2d1c216ba3b578c0f3cf9cdebeddb6e66b1b218bb33596ea7769c3a" [[package]] name = "windows_aarch64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" +checksum = "4c8b1b673ffc16c47a9ff48570a9d85e25d265735c503681332589af6253c6c7" [[package]] name = "windows_i686_gnu" @@ -5098,9 +5197,9 @@ checksum = "d3925fd0b0b804730d44d4b6278c50f9699703ec49bcd628020f46f4ba07d9e1" [[package]] name = "windows_i686_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" +checksum = "de3887528ad530ba7bdbb1faa8275ec7a1155a45ffa57c37993960277145d640" [[package]] name = "windows_i686_msvc" @@ -5122,9 +5221,9 @@ checksum = "ce907ac74fe331b524c1298683efbf598bb031bc84d5e274db2083696d07c57c" [[package]] name = "windows_i686_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" +checksum = "bf4d1122317eddd6ff351aa852118a2418ad4214e6613a50e0191f7004372605" [[package]] name = "windows_x86_64_gnu" @@ -5146,15 +5245,15 @@ checksum = "2babfba0828f2e6b32457d5341427dcbb577ceef556273229959ac23a10af33d" [[package]] name = "windows_x86_64_gnu" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" +checksum = "c1040f221285e17ebccbc2591ffdc2d44ee1f9186324dd3e84e99ac68d699c45" [[package]] name = "windows_x86_64_gnullvm" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" +checksum = "628bfdf232daa22b0d64fdb62b09fcc36bb01f05a3939e20ab73aaf9470d0463" [[package]] name = "windows_x86_64_msvc" @@ -5176,9 +5275,9 @@ checksum = "f4dd6dc7df2d84cf7b33822ed5b86318fb1781948e9663bacd047fc9dd52259d" [[package]] name = "windows_x86_64_msvc" -version = "0.42.0" +version = "0.42.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" +checksum = "447660ad36a13288b1db4d4248e857b510e8c3a225c822ba4fb748c0aafecffd" [[package]] name = "winit" @@ -5340,6 +5439,18 @@ dependencies = [ "nih_plug_xtask", ] +[[package]] +name = "yazi" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c03b3e19c937b5b9bd8e52b1c88f30cce5c0d33d676cf174866175bb794ff658" + +[[package]] +name = "zeno" +version = "0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c110ba09c9b3a43edd4803d570df0da2414fed6e822e22b976a4e3ef50860701" + [[package]] name = "zstd" version = "0.11.2+zstd.1.5.2" @@ -5361,10 +5472,11 @@ dependencies = [ [[package]] name = "zstd-sys" -version = "2.0.4+zstd.1.5.2" +version = "2.0.5+zstd.1.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4fa202f2ef00074143e219d15b62ffc317d17cc33909feac471c044087cad7b0" +checksum = "edc50ffce891ad571e9f9afe5039c4837bede781ac4bb13052ed7ae695518596" dependencies = [ "cc", "libc", + "pkg-config", ] diff --git a/Cargo.toml b/Cargo.toml index d334bbbc..06534de0 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -105,7 +105,7 @@ assert_no_alloc = { git = "https://github.com/robbert-vdh/rust-assert-no-alloc.g # Used for the `standalone` feature # NOTE: OpenGL support is not needed here, but rust-analyzer gets confused when # some crates do use it and others don't -baseview = { git = "https://github.com/robbert-vdh/baseview.git", branch = "feature/resize", features = ["opengl"], optional = true } +baseview = { git = "https://github.com/RustAudio/baseview.git", rev = "7001c2521fa1a439a01967cb881b411cd75d9ee0", features = ["opengl"], optional = true } # All the claps! clap = { version = "3.2", features = ["derive"], optional = true } cpal = { version = "0.14.1", optional = true } diff --git a/nih_plug_vizia/Cargo.toml b/nih_plug_vizia/Cargo.toml index 9bd519af..3dbcbb17 100644 --- a/nih_plug_vizia/Cargo.toml +++ b/nih_plug_vizia/Cargo.toml @@ -11,10 +11,11 @@ description = "An adapter to use VIZIA GUIs with NIH-plug" nih_plug = { path = ".." } nih_plug_assets = { git = "https://github.com/robbert-vdh/nih_plug_assets.git" } -baseview = { git = "https://github.com/robbert-vdh/baseview.git", branch = "feature/resize" } +baseview = { git = "https://github.com/RustAudio/baseview.git", rev = "7001c2521fa1a439a01967cb881b411cd75d9ee0" } crossbeam = "0.8" # To make the state persistable serde = { version = "1.0", features = ["derive"] } -# This fork contains changed for better keyboard modifier handling and DPI -# scaling, window scaling, and a lot more fixes and improvements +# This fork contains some additional patches on top of Vizia to make it more +# suitable for use in NIH-plug. The set of patches constantly changes as things +# are merged into upstream Vizia. vizia = { git = "https://github.com/robbert-vdh/vizia.git", branch = "patched", default_features = false, features = ["baseview", "clipboard", "x11"] } diff --git a/nih_plug_vizia/src/assets.rs b/nih_plug_vizia/src/assets.rs index 2f4ff775..715d843a 100644 --- a/nih_plug_vizia/src/assets.rs +++ b/nih_plug_vizia/src/assets.rs @@ -32,26 +32,26 @@ pub const NOTO_SANS_BOLD: &str = "Noto Sans Bold"; pub const NOTO_SANS_BOLD_ITALIC: &str = "Noto Sans Bold Italic"; pub fn register_noto_sans_regular(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_REGULAR, fonts::NOTO_SANS_REGULAR); + cx.add_fonts_mem(&[fonts::NOTO_SANS_REGULAR]); } pub fn register_noto_sans_regular_italic(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_REGULAR_ITALIC, fonts::NOTO_SANS_REGULAR_ITALIC); + cx.add_fonts_mem(&[fonts::NOTO_SANS_REGULAR_ITALIC]); } pub fn register_noto_sans_thin(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_THIN, fonts::NOTO_SANS_THIN); + cx.add_fonts_mem(&[fonts::NOTO_SANS_THIN]); } pub fn register_noto_sans_thin_italic(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_THIN_ITALIC, fonts::NOTO_SANS_THIN_ITALIC); + cx.add_fonts_mem(&[fonts::NOTO_SANS_THIN_ITALIC]); } pub fn register_noto_sans_light(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_LIGHT, fonts::NOTO_SANS_LIGHT); + cx.add_fonts_mem(&[fonts::NOTO_SANS_LIGHT]); } pub fn register_noto_sans_light_italic(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_LIGHT_ITALIC, fonts::NOTO_SANS_LIGHT_ITALIC); + cx.add_fonts_mem(&[fonts::NOTO_SANS_LIGHT_ITALIC]); } pub fn register_noto_sans_bold(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_BOLD, fonts::NOTO_SANS_BOLD); + cx.add_fonts_mem(&[fonts::NOTO_SANS_BOLD]); } pub fn register_noto_sans_bold_italic(cx: &mut Context) { - cx.add_font_mem(NOTO_SANS_BOLD_ITALIC, fonts::NOTO_SANS_BOLD_ITALIC); + cx.add_fonts_mem(&[fonts::NOTO_SANS_BOLD_ITALIC]); } diff --git a/nih_plug_vizia/src/editor.rs b/nih_plug_vizia/src/editor.rs index 75d8fb6d..1d1e7cdf 100644 --- a/nih_plug_vizia/src/editor.rs +++ b/nih_plug_vizia/src/editor.rs @@ -49,7 +49,7 @@ impl Editor for ViziaEditor { if theming >= ViziaTheming::Custom { // NOTE: vizia's font rendering looks way too dark and thick. Going one font weight // lower seems to compensate for this. - cx.set_default_font(assets::NOTO_SANS_LIGHT); + cx.set_default_font(&[assets::NOTO_SANS_LIGHT]); cx.add_theme(include_str!("../assets/theme.css")); // There doesn't seem to be any way to bundle styles with a widget, so we'll always diff --git a/nih_plug_vizia/src/vizia_assets.rs b/nih_plug_vizia/src/vizia_assets.rs index 3772c48a..c3ef049a 100644 --- a/nih_plug_vizia/src/vizia_assets.rs +++ b/nih_plug_vizia/src/vizia_assets.rs @@ -8,38 +8,38 @@ pub use vizia::fonts; /// The font name for the Roboto (Regular) font, needs to be registered using [`register_roboto()`] /// first. -pub const ROBOTO: &str = "roboto"; +pub const ROBOTO: &str = "Roboto"; /// The font name for the Roboto Bold font, needs to be registered using [`register_roboto_bold()`] /// first. -pub const ROBOTO_BOLD: &str = "roboto-bold"; +pub const ROBOTO_BOLD: &str = "Roboto Bold"; /// The font name for the icon font (Entypo), needs to be registered using [`register_icons()`] /// first. -pub const ICONS: &str = "icons"; +pub const ICONS: &str = "Entypo"; /// The font name for the emoji font (Open Sans Eomji), needs to be registered using /// [`register_emoji()`] first. -pub const EMOJI: &str = "emoji"; +pub const EMOJI: &str = "OpenSansEmoji"; /// The font name for the arabic font (Amiri Regular), needs to be registered using /// [`register_arabic()`] first. -pub const ARABIC: &str = "arabic"; +pub const ARABIC: &str = "Amiri"; /// The font name for the material font (Material Icons), needs to be registered using /// [`register_material()`] first. -pub const MATERIAL: &str = "material"; +pub const MATERIAL: &str = "Material Icons"; pub fn register_roboto(cx: &mut Context) { - cx.add_font_mem(ROBOTO, fonts::ROBOTO_REGULAR); + cx.add_fonts_mem(&[fonts::ROBOTO_REGULAR]); } pub fn register_roboto_bold(cx: &mut Context) { - cx.add_font_mem(ROBOTO_BOLD, fonts::ROBOTO_BOLD); + cx.add_fonts_mem(&[fonts::ROBOTO_BOLD]); } pub fn register_icons(cx: &mut Context) { - cx.add_font_mem(ICONS, fonts::ENTYPO); + cx.add_fonts_mem(&[fonts::ENTYPO]); } pub fn register_emoji(cx: &mut Context) { - cx.add_font_mem(EMOJI, fonts::OPEN_SANS_EMOJI); + cx.add_fonts_mem(&[fonts::OPEN_SANS_EMOJI]); } pub fn register_arabic(cx: &mut Context) { - cx.add_font_mem(ARABIC, fonts::AMIRI_REGULAR); + cx.add_fonts_mem(&[fonts::AMIRI_REGULAR]); } pub fn register_material(cx: &mut Context) { - cx.add_font_mem(MATERIAL, fonts::MATERIAL_ICONS_REGULAR); + cx.add_fonts_mem(&[fonts::MATERIAL_ICONS_REGULAR]); } diff --git a/nih_plug_vizia/src/widgets.rs b/nih_plug_vizia/src/widgets.rs index 3e48d89d..31db997f 100644 --- a/nih_plug_vizia/src/widgets.rs +++ b/nih_plug_vizia/src/widgets.rs @@ -102,7 +102,7 @@ impl Model for WindowModel { fn event(&mut self, cx: &mut EventContext, event: &mut Event) { // This gets fired whenever the inner window gets resized event.map(|window_event, _| { - if let WindowEvent::WindowResize = window_event { + if let WindowEvent::GeometryChanged { .. } = window_event { let logical_size = (cx.window_size().width, cx.window_size().height); let old_logical_size @ (old_logical_width, old_logical_height) = self.vizia_state.size.load(); diff --git a/plugins/crisp/src/editor.rs b/plugins/crisp/src/editor.rs index 430107c9..9de3b088 100644 --- a/plugins/crisp/src/editor.rs +++ b/plugins/crisp/src/editor.rs @@ -51,7 +51,9 @@ pub(crate) fn create( VStack::new(cx, |cx| { Label::new(cx, "Crisp") - .font(assets::NOTO_SANS_THIN) + .font_family(vec![FamilyOwned::Name(String::from( + assets::NOTO_SANS_THIN, + ))]) .font_size(30.0) .height(Pixels(50.0)) .child_top(Stretch(1.0)) diff --git a/plugins/diopser/src/editor.rs b/plugins/diopser/src/editor.rs index 5b63b66c..a8e23c9a 100644 --- a/plugins/diopser/src/editor.rs +++ b/plugins/diopser/src/editor.rs @@ -86,7 +86,9 @@ pub(crate) fn create(editor_data: Data, editor_state: Arc) -> Option fn top_bar(cx: &mut Context) { HStack::new(cx, |cx| { Label::new(cx, "Diopser") - .font(assets::NOTO_SANS_THIN) + .font_family(vec![FamilyOwned::Name(String::from( + assets::NOTO_SANS_THIN, + ))]) .font_size(37.0) .top(Pixels(-2.0)) .left(Pixels(8.0)) diff --git a/plugins/diopser/src/editor/safe_mode.rs b/plugins/diopser/src/editor/safe_mode.rs index b0d70ffa..5bdb47eb 100644 --- a/plugins/diopser/src/editor/safe_mode.rs +++ b/plugins/diopser/src/editor/safe_mode.rs @@ -4,7 +4,7 @@ use std::sync::atomic::{AtomicBool, Ordering}; use std::sync::Arc; use nih_plug::prelude::Param; -use nih_plug_vizia::vizia::prelude::EventContext; +use nih_plug_vizia::vizia::prelude::*; use nih_plug_vizia::widgets::ParamEvent; use crate::params::{self, DiopserParams}; diff --git a/plugins/examples/gain_gui_vizia/src/editor.rs b/plugins/examples/gain_gui_vizia/src/editor.rs index f42176c2..b8531950 100644 --- a/plugins/examples/gain_gui_vizia/src/editor.rs +++ b/plugins/examples/gain_gui_vizia/src/editor.rs @@ -41,7 +41,9 @@ pub(crate) fn create( VStack::new(cx, |cx| { Label::new(cx, "Gain GUI") - .font(assets::NOTO_SANS_THIN) + .font_family(vec![FamilyOwned::Name(String::from( + assets::NOTO_SANS_THIN, + ))]) .font_size(30.0) .height(Pixels(50.0)) .child_top(Stretch(1.0)) diff --git a/plugins/spectral_compressor/src/editor.rs b/plugins/spectral_compressor/src/editor.rs index 95056736..ce4462dc 100644 --- a/plugins/spectral_compressor/src/editor.rs +++ b/plugins/spectral_compressor/src/editor.rs @@ -56,7 +56,9 @@ pub(crate) fn create( VStack::new(cx, |cx| { Label::new(cx, "Spectral Compressor") - .font(assets::NOTO_SANS_THIN) + .font_family(vec![FamilyOwned::Name(String::from( + assets::NOTO_SANS_THIN, + ))]) .font_size(30.0) .height(Pixels(50.0)) .child_top(Stretch(1.0)) diff --git a/src/wrapper/util.rs b/src/wrapper/util.rs index b81b4f4b..19df3cbd 100644 --- a/src/wrapper/util.rs +++ b/src/wrapper/util.rs @@ -103,6 +103,8 @@ pub fn setup_logger() { let logger_config = simplelog::ConfigBuilder::new() .set_thread_mode(simplelog::ThreadLogMode::Both) .set_location_level(simplelog::LevelFilter::Debug) + .add_filter_ignore_str("cosmic_text::buffer") + .add_filter_ignore_str("cosmic_text::shape") .build(); let init_stderr_logger = || { simplelog::TermLogger::init(