Upgrade Linebender and related dependencies (#3819)
Co-authored-by: Timon <me@timon.zip>
This commit is contained in:
parent
8117ddcdb3
commit
82cf8eb369
File diff suppressed because it is too large
Load Diff
16
Cargo.toml
16
Cargo.toml
|
|
@ -134,7 +134,7 @@ bytemuck = { version = "1.13", features = ["derive", "min_const_generics"] }
|
||||||
serde = { version = "1.0", features = ["derive", "rc"] }
|
serde = { version = "1.0", features = ["derive", "rc"] }
|
||||||
serde_json = "1.0"
|
serde_json = "1.0"
|
||||||
serde-wasm-bindgen = "0.6"
|
serde-wasm-bindgen = "0.6"
|
||||||
reqwest = { version = "0.12", features = ["blocking", "rustls-tls", "json"] }
|
reqwest = { version = "0.13", features = ["blocking", "json"] }
|
||||||
futures = "0.3"
|
futures = "0.3"
|
||||||
env_logger = "0.11"
|
env_logger = "0.11"
|
||||||
log = "0.4"
|
log = "0.4"
|
||||||
|
|
@ -148,7 +148,7 @@ anyhow = "1.0"
|
||||||
proc-macro2 = { version = "1", features = ["span-locations"] }
|
proc-macro2 = { version = "1", features = ["span-locations"] }
|
||||||
quote = "1.0"
|
quote = "1.0"
|
||||||
chrono = "0.4"
|
chrono = "0.4"
|
||||||
ron = "0.11"
|
ron = "0.12"
|
||||||
fastnoise-lite = "1.1"
|
fastnoise-lite = "1.1"
|
||||||
wgpu = { version = "27.0", features = [
|
wgpu = { version = "27.0", features = [
|
||||||
# We don't have wgpu on multiple threads (yet) https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md#wgpu-types-now-send-sync-on-wasm
|
# We don't have wgpu on multiple threads (yet) https://github.com/gfx-rs/wgpu/blob/trunk/CHANGELOG.md#wgpu-types-now-send-sync-on-wasm
|
||||||
|
|
@ -183,13 +183,13 @@ keyboard-types = "0.8"
|
||||||
url = "2.5"
|
url = "2.5"
|
||||||
tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt", "rt-multi-thread"] }
|
tokio = { version = "1.29", features = ["fs", "macros", "io-std", "rt", "rt-multi-thread"] }
|
||||||
# Linebender ecosystem (BEGIN)
|
# Linebender ecosystem (BEGIN)
|
||||||
kurbo = { version = "0.12", features = ["serde"] }
|
kurbo = { version = "0.13", features = ["serde"] }
|
||||||
vello = { git = "https://github.com/linebender/vello" }
|
vello = "0.7"
|
||||||
vello_encoding = { git = "https://github.com/linebender/vello" }
|
vello_encoding = "0.7"
|
||||||
resvg = "0.45"
|
resvg = "0.47"
|
||||||
usvg = "0.45"
|
usvg = "0.47"
|
||||||
parley = "0.6"
|
parley = "0.6"
|
||||||
skrifa = "0.36"
|
skrifa = "0.40"
|
||||||
polycool = "0.4"
|
polycool = "0.4"
|
||||||
# Linebender ecosystem (END)
|
# Linebender ecosystem (END)
|
||||||
rand = { version = "0.9", default-features = false, features = ["std_rng"] }
|
rand = { version = "0.9", default-features = false, features = ["std_rng"] }
|
||||||
|
|
|
||||||
|
|
@ -29,7 +29,7 @@ dyn-any-derive = { path = "derive", optional = true }
|
||||||
|
|
||||||
# Optional dependencies
|
# Optional dependencies
|
||||||
glam = { version = "0.29", optional = true, default-features = false }
|
glam = { version = "0.29", optional = true, default-features = false }
|
||||||
reqwest = { version = "0.12", optional = true, default-features = false }
|
reqwest = { version = "0.13", optional = true, default-features = false }
|
||||||
|
|
||||||
[package.metadata.docs.rs]
|
[package.metadata.docs.rs]
|
||||||
all-features = true
|
all-features = true
|
||||||
|
|
|
||||||
|
|
@ -35,7 +35,7 @@ smallvec = "1.13.2"
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
glob = "0.3"
|
glob = "0.3"
|
||||||
svg = "0.18"
|
svg = "0.18"
|
||||||
resvg = "0.44"
|
resvg = "0.47"
|
||||||
image = "0.25"
|
image = "0.25"
|
||||||
|
|
||||||
# Required dependencies
|
# Required dependencies
|
||||||
|
|
|
||||||
|
|
@ -34,6 +34,6 @@ thiserror = "2.0.17"
|
||||||
|
|
||||||
# Optional dependencies (should be dev dependencies, but Cargo currently doesn't allow optional dev dependencies)
|
# Optional dependencies (should be dev dependencies, but Cargo currently doesn't allow optional dev dependencies)
|
||||||
image = { version = "0.25.9", optional = true }
|
image = { version = "0.25.9", optional = true }
|
||||||
reqwest = { version = "0.12.26", optional = true, features = ["blocking"] }
|
reqwest = { version = "0.13", optional = true, features = ["blocking"] }
|
||||||
libraw-rs = { version = "0.0.4", optional = true }
|
libraw-rs = { version = "0.0.4", optional = true }
|
||||||
rayon = { version = "1.11.0", optional = true }
|
rayon = { version = "1.11.0", optional = true }
|
||||||
|
|
|
||||||
|
|
@ -498,12 +498,12 @@ impl Render for Artboard {
|
||||||
let [a, b] = [self.location.as_dvec2(), self.location.as_dvec2() + self.dimensions.as_dvec2()];
|
let [a, b] = [self.location.as_dvec2(), self.location.as_dvec2() + self.dimensions.as_dvec2()];
|
||||||
let rect = kurbo::Rect::new(a.x.min(b.x), a.y.min(b.y), a.x.max(b.x), a.y.max(b.y));
|
let rect = kurbo::Rect::new(a.x.min(b.x), a.y.min(b.y), a.x.max(b.x), a.y.max(b.y));
|
||||||
|
|
||||||
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::new(transform.to_cols_array()), &rect);
|
scene.push_layer(peniko::Fill::NonZero, peniko::Mix::Normal, 1., kurbo::Affine::new(transform.to_cols_array()), &rect);
|
||||||
scene.fill(peniko::Fill::NonZero, kurbo::Affine::new(transform.to_cols_array()), color, None, &rect);
|
scene.fill(peniko::Fill::NonZero, kurbo::Affine::new(transform.to_cols_array()), color, None, &rect);
|
||||||
scene.pop_layer();
|
scene.pop_layer();
|
||||||
|
|
||||||
if self.clip {
|
if self.clip {
|
||||||
scene.push_clip_layer(kurbo::Affine::new(transform.to_cols_array()), &rect);
|
scene.push_clip_layer(peniko::Fill::NonZero, kurbo::Affine::new(transform.to_cols_array()), &rect);
|
||||||
}
|
}
|
||||||
// Since the content's transform is right multiplied in when rendering the content, we just need to right multiply by the artboard offset here.
|
// Since the content's transform is right multiplied in when rendering the content, we just need to right multiply by the artboard offset here.
|
||||||
let child_transform = transform * DAffine2::from_translation(self.location.as_dvec2());
|
let child_transform = transform * DAffine2::from_translation(self.location.as_dvec2());
|
||||||
|
|
@ -643,6 +643,7 @@ impl Render for Table<Graphic> {
|
||||||
|
|
||||||
if let RenderBoundingBox::Rectangle(bounds) = bounds {
|
if let RenderBoundingBox::Rectangle(bounds) = bounds {
|
||||||
scene.push_layer(
|
scene.push_layer(
|
||||||
|
peniko::Fill::NonZero,
|
||||||
peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver),
|
peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver),
|
||||||
opacity,
|
opacity,
|
||||||
kurbo::Affine::IDENTITY,
|
kurbo::Affine::IDENTITY,
|
||||||
|
|
@ -668,9 +669,15 @@ impl Render for Table<Graphic> {
|
||||||
if let RenderBoundingBox::Rectangle(bounds) = bounds {
|
if let RenderBoundingBox::Rectangle(bounds) = bounds {
|
||||||
let rect = kurbo::Rect::new(bounds[0].x, bounds[0].y, bounds[1].x, bounds[1].y);
|
let rect = kurbo::Rect::new(bounds[0].x, bounds[0].y, bounds[1].x, bounds[1].y);
|
||||||
|
|
||||||
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(peniko::Fill::NonZero, peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
|
||||||
mask_element.render_to_vello(scene, transform_mask, context, &render_params.for_clipper());
|
mask_element.render_to_vello(scene, transform_mask, context, &render_params.for_clipper());
|
||||||
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Normal, peniko::Compose::SrcIn), 1., kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(
|
||||||
|
peniko::Fill::NonZero,
|
||||||
|
peniko::BlendMode::new(peniko::Mix::Normal, peniko::Compose::SrcIn),
|
||||||
|
1.,
|
||||||
|
kurbo::Affine::IDENTITY,
|
||||||
|
&rect,
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
row.element.render_to_vello(scene, transform, context, render_params);
|
row.element.render_to_vello(scene, transform, context, render_params);
|
||||||
|
|
@ -976,6 +983,7 @@ impl Render for Table<Vector> {
|
||||||
let quad = Quad::from_box(layer_bounds).inflate(weight * max_scale(applied_stroke_transform));
|
let quad = Quad::from_box(layer_bounds).inflate(weight * max_scale(applied_stroke_transform));
|
||||||
let layer_bounds = quad.bounding_box();
|
let layer_bounds = quad.bounding_box();
|
||||||
scene.push_layer(
|
scene.push_layer(
|
||||||
|
peniko::Fill::NonZero,
|
||||||
peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver),
|
peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver),
|
||||||
opacity,
|
opacity,
|
||||||
kurbo::Affine::new(multiplied_transform.to_cols_array()),
|
kurbo::Affine::new(multiplied_transform.to_cols_array()),
|
||||||
|
|
@ -1144,9 +1152,9 @@ impl Render for Table<Vector> {
|
||||||
};
|
};
|
||||||
|
|
||||||
if wants_stroke_below {
|
if wants_stroke_below {
|
||||||
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(peniko::Fill::NonZero, peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
|
||||||
vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform));
|
vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform));
|
||||||
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Normal, compose), 1., kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(peniko::Fill::NonZero, peniko::BlendMode::new(peniko::Mix::Normal, compose), 1., kurbo::Affine::IDENTITY, &rect);
|
||||||
|
|
||||||
do_stroke(scene, 2.);
|
do_stroke(scene, 2.);
|
||||||
|
|
||||||
|
|
@ -1158,9 +1166,9 @@ impl Render for Table<Vector> {
|
||||||
// Fill first (unclipped), then stroke (clipped) above
|
// Fill first (unclipped), then stroke (clipped) above
|
||||||
do_fill(scene);
|
do_fill(scene);
|
||||||
|
|
||||||
scene.push_layer(peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(peniko::Fill::NonZero, peniko::Mix::Normal, 1., kurbo::Affine::IDENTITY, &rect);
|
||||||
vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform));
|
vector_table.render_to_vello(scene, parent_transform, _context, &render_params.for_alignment(applied_stroke_transform));
|
||||||
scene.push_layer(peniko::BlendMode::new(peniko::Mix::Normal, compose), 1., kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(peniko::Fill::NonZero, peniko::BlendMode::new(peniko::Mix::Normal, compose), 1., kurbo::Affine::IDENTITY, &rect);
|
||||||
|
|
||||||
do_stroke(scene, 2.);
|
do_stroke(scene, 2.);
|
||||||
|
|
||||||
|
|
@ -1386,7 +1394,7 @@ impl Render for Table<Raster<CPU>> {
|
||||||
{
|
{
|
||||||
let blending = peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver);
|
let blending = peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver);
|
||||||
let rect = kurbo::Rect::new(bounds[0].x, bounds[0].y, bounds[1].x, bounds[1].y);
|
let rect = kurbo::Rect::new(bounds[0].x, bounds[0].y, bounds[1].x, bounds[1].y);
|
||||||
scene.push_layer(blending, opacity, kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(peniko::Fill::NonZero, blending, opacity, kurbo::Affine::IDENTITY, &rect);
|
||||||
layer = true;
|
layer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1444,7 +1452,7 @@ impl Render for Table<Raster<GPU>> {
|
||||||
{
|
{
|
||||||
let blending = peniko::BlendMode::new(blend_mode.blend_mode.to_peniko(), peniko::Compose::SrcOver);
|
let blending = peniko::BlendMode::new(blend_mode.blend_mode.to_peniko(), peniko::Compose::SrcOver);
|
||||||
let rect = kurbo::Rect::new(bounds[0].x, bounds[0].y, bounds[1].x, bounds[1].y);
|
let rect = kurbo::Rect::new(bounds[0].x, bounds[0].y, bounds[1].x, bounds[1].y);
|
||||||
scene.push_layer(blending, blend_mode.opacity, kurbo::Affine::IDENTITY, &rect);
|
scene.push_layer(peniko::Fill::NonZero, blending, blend_mode.opacity, kurbo::Affine::IDENTITY, &rect);
|
||||||
layer = true;
|
layer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1534,7 +1542,7 @@ impl Render for Table<Color> {
|
||||||
let mut layer = false;
|
let mut layer = false;
|
||||||
if opacity < 1. || alpha_blending.blend_mode != BlendMode::default() {
|
if opacity < 1. || alpha_blending.blend_mode != BlendMode::default() {
|
||||||
let blending = peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver);
|
let blending = peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver);
|
||||||
scene.push_layer(blending, opacity, kurbo::Affine::scale(f64::INFINITY), &rect);
|
scene.push_layer(peniko::Fill::NonZero, blending, opacity, kurbo::Affine::scale(f64::INFINITY), &rect);
|
||||||
layer = true;
|
layer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -1631,7 +1639,7 @@ impl Render for Table<GradientStops> {
|
||||||
if opacity < 1. || alpha_blending.blend_mode != BlendMode::default() {
|
if opacity < 1. || alpha_blending.blend_mode != BlendMode::default() {
|
||||||
let blending = peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver);
|
let blending = peniko::BlendMode::new(blend_mode, peniko::Compose::SrcOver);
|
||||||
// See implemenation in `Table<Color>` for more detail
|
// See implemenation in `Table<Color>` for more detail
|
||||||
scene.push_layer(blending, opacity, kurbo::Affine::scale(f64::INFINITY), &rect);
|
scene.push_layer(peniko::Fill::NonZero, blending, opacity, kurbo::Affine::scale(f64::INFINITY), &rect);
|
||||||
layer = true;
|
layer = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue