diff --git a/Cargo.lock b/Cargo.lock index 9828b4d..b7ecd60 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -408,6 +408,7 @@ dependencies = [ "serde", "serde_json", "tempfile", + "url", ] [[package]] @@ -467,6 +468,7 @@ dependencies = [ "ferroui-harfbuzz", "ferroui-opengl", "ferroui-skia", + "url", "wasm-bindgen", ] @@ -501,6 +503,7 @@ dependencies = [ "ferroui-remote-protocol", "ferroui-system", "rustc-hash", + "url", ] [[package]] @@ -524,6 +527,7 @@ dependencies = [ "ferroui-build", "ferroui-controls", "ferroui-markup-xaml", + "ferroui-system", "sysinfo", ] @@ -533,6 +537,7 @@ version = "0.5.0-preview.1" dependencies = [ "ferroui-base", "ferroui-controls", + "url", ] [[package]] @@ -542,7 +547,9 @@ dependencies = [ "bitflags", "ferroui-base", "ferroui-controls", + "ferroui-system", "futures-util", + "url", "uuid", "zbus", ] @@ -563,6 +570,7 @@ dependencies = [ "ferroui-base", "ferroui-controls", "ferroui-harfbuzz", + "ferroui-system", ] [[package]] @@ -580,6 +588,7 @@ dependencies = [ "ferroui-build-scan", "ferroui-controls", "ferroui-markup", + "url", ] [[package]] @@ -590,6 +599,8 @@ dependencies = [ "ferroui-build-scan", "ferroui-markup", "ferroui-markup-xaml", + "roxmltree", + "url", "xamlx", ] @@ -614,11 +625,11 @@ dependencies = [ "cc", "ferroui-base", "ferroui-controls", - "ferroui-dialogs", "ferroui-metal", "ferroui-microcom", "ferroui-opengl", "microcom-codegen", + "url", ] [[package]] @@ -636,6 +647,7 @@ dependencies = [ name = "ferroui-remote-protocol" version = "0.5.0-preview.1" dependencies = [ + "ferroui-system", "uuid", ] @@ -690,6 +702,7 @@ dependencies = [ "ferroui-vulkan", "microcom-codegen", "mozangle", + "url", "windows-sys", ] @@ -703,8 +716,10 @@ dependencies = [ "ferroui-dialogs", "ferroui-freedesktop", "ferroui-opengl", + "ferroui-system", "ferroui-vulkan", "libc", + "url", "x11-dl", ] @@ -1527,8 +1542,6 @@ checksum = "3a219298ac11a56ea9a6d2120044824d6f01aeb034955e7af7bc16858527deea" [[package]] name = "skia-bindings" version = "0.153.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb325787c91b3f6c34a7c6f2b8a2297b20292d733ca53a08c233e5028aec49af" dependencies = [ "bindgen", "cc", diff --git a/Cargo.toml b/Cargo.toml index 97e5ebd..cc61d83 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,6 +13,33 @@ repository = "https://github.com/FerroUI/Solitaire" [workspace.dependencies] # >>> FerroUI workspace dependencies (written by FerroUI/scripts/apps/sync-workspace.py from FerroUI/Cargo.toml; do not edit) +ferroui-media-camera-windows = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Windows" } +ferroui-media-video-windows = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Windows" } +ferroui-media-windows = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Windows" } +ferroui-media-camera-linux = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Linux" } +ferroui-media-video-linux = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Linux" } +ferroui-media-linux = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Linux" } +ferroui-media-video = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video" } +ferroui-media-camera = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera" } +ferroui-media-video-controls = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Controls" } +ferroui-media-video-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Apple" } +ferroui-media-camera-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Apple" } +ferroui-media-controls = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Controls" } +ferroui-media-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Apple" } +ferroui-media-browser = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Browser" } +ferroui-media-video-browser = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Browser" } +ferroui-media-camera-browser = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Browser" } +ferroui-media = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media" } +ferroui-media3d = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media3D" } +ferroui-media-metal = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Metal" } +ferroui-media-opengl = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.OpenGL" } +ferroui-media-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Android" } +ferroui-media-video-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Video.Android" } +ferroui-media-camera-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Android" } +ferroui-media-camera-controls = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Camera.Controls" } +ferroui-media-qr = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Qr", default-features = false } +ferroui-media-qr-android = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Qr.Android" } +ferroui-media-qr-apple = { version = "=0.5.0-preview.1", path = "FerroUI/src/FerroUI.Media.Qr.Apple" } # The Dock port (docs/porting/dock): its crates and the dependencies only it has. ferrodock-controls-recycling-model = { version = "=0.5.0-preview.1", path = "FerroUI/src/Dock/FerroDock.Controls.Recycling.Model" } ferrodock-controls-recycling-model-ferro = { version = "=0.5.0-preview.1", path = "FerroUI/src/Dock/FerroDock.Controls.Recycling.Model.Ferro" } @@ -193,7 +220,7 @@ wayland-protocols-misc = { version = "=0.3.12", features = ["client"] } jni-sys = { version = "=0.4.1" } paste = "1" cc = "1" -skia-safe = { version = "0.153" } +skia-safe = { version = "=0.153.3" } # The Vello render backend (docs/porting/vello-backend.md, section 2): exact versions, because the # renderers of the Vello project change their interfaces between minor releases. `vello_cpu` without # its default features: its thread pool is added by the backend on targets with threads (the @@ -230,6 +257,9 @@ gif = { version = "=0.14.2", default-features = false, features = ["std"] } vello_gpu = { version = "=0.3.0", default-features = false, features = ["std", "text"] } vello = { version = "=0.11.0", default-features = false, features = ["wgpu"] } wgpu = { version = "=30.0.1", default-features = false, features = ["std", "wgsl", "metal"] } +# The shader translator of `wgpu`, at its version: `ferroui-build` translates the WGSL of the runtime +# shader effects to GLSL ES 3.0 for WebGL2 at build time (its features `wgsl-in` and `glsl-out`). +naga = { version = "=30.0.1", default-features = false } # The version of the `wasm-bindgen` command-line tool on PATH has to be this exact version. wasm-bindgen = "=0.2.129" # The bindings of the WebGL2 renderer of `vello_gpu`, at the versions that belong to that release @@ -277,11 +307,27 @@ lto = false # then shows addresses (docs/binary-size.md, section 4.3). On Windows the executable never holds the # symbols (they are in the PDB beside it), so the setting changes nothing there. Build with the # release profile for a backtrace with names. +# +# Without unwinding (`panic = "abort"`, docs/binary-size.md, section 4.7, #567): a panic ends the +# process, after the panic hook has run. The unwind tables and the landing pads are left out: hello +# world's executable is 21 % smaller. No production path of the framework carries an expected +# error as a panic (docs/porting/panics-as-exceptions.md); what a catch of a panic still isolates +# is a bug, which then ends the process instead of being logged. The development tools that isolate +# the code of the application they inspect (the Designer, the previewer, hot reload, DevTools) are +# built with `dev`, `release` or `dist-unwind`. Cargo ignores the setting for tests, benches, build +# scripts and procedural macros, which always unwind. [profile.dist] inherits = "release" lto = "fat" codegen-units = 1 strip = "symbols" +panic = "abort" + +# The shipped build with unwinding: `dist` with `panic = "unwind"`, for an application that catches +# panics to carry on (a plug-in host, a tool that isolates the code it runs). +[profile.dist-unwind] +inherits = "dist" +panic = "unwind" # The WebAssembly module of the browser (scripts/build-browser.sh): optimised for size, because the # module is downloaded and compiled by every visitor (docs/porting/browser-platform.md, section 18). @@ -354,4 +400,8 @@ opt-level = 3 [profile.browser.package.read-fonts] opt-level = 3 + +[patch.crates-io] +# Pinned source hotfix for Graphite Metal's retained Objective-C objects. +skia-bindings = { path = "FerroUI/external/rust-skia-bindings" } # <<< FerroUI profiles diff --git a/FerroUI b/FerroUI index b753739..4702de4 160000 --- a/FerroUI +++ b/FerroUI @@ -1 +1 @@ -Subproject commit b753739811c34eba24c86ec383232053e914e42e +Subproject commit 4702de41a8b8d66e877788b33ca9af3b40e0a59a diff --git a/Solitaire/Cargo.toml b/Solitaire/Cargo.toml index aebd1fb..05fc942 100644 --- a/Solitaire/Cargo.toml +++ b/Solitaire/Cargo.toml @@ -23,6 +23,7 @@ rand_chacha = "0.9" serde = { version = "1", features = ["derive"] } serde_json = "1" dirs = "6" +url = { workspace = true } tempfile = "3" [[bin]] diff --git a/Solitaire/src/app.rs b/Solitaire/src/app.rs index b77acbc..5847de1 100644 --- a/Solitaire/src/app.rs +++ b/Solitaire/src/app.rs @@ -35,9 +35,8 @@ impl ApplicationImpl for App { ); ferroui::base::media::FontManager::current().add_font_collection(std::rc::Rc::new( ferroui::base::media::fonts::EmbeddedFontCollection::new( - ferroui::base::utilities::Uri::absolute("fonts:Solitaire").expect("font key"), - ferroui::base::utilities::Uri::absolute("ferres://FerroSolitaire/Assets") - .expect("font source"), + url::Url::parse("fonts:Solitaire").expect("font key"), + url::Url::parse("ferres://FerroSolitaire/Assets").expect("font source"), ), )); this.styles().add(FluentTheme::new().as_style());