summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--core/Cargo.toml2
-rw-r--r--examples/color_palette/Cargo.toml2
-rw-r--r--examples/color_palette/src/main.rs34
-rw-r--r--examples/download_progress/src/download.rs4
-rw-r--r--graphics/src/widget/canvas/frame.rs42
-rw-r--r--graphics/src/widget/canvas/geometry.rs6
-rw-r--r--wgpu/src/window/compositor.rs2
7 files changed, 53 insertions, 39 deletions
diff --git a/core/Cargo.toml b/core/Cargo.toml
index 92b8c56a..a8d50801 100644
--- a/core/Cargo.toml
+++ b/core/Cargo.toml
@@ -11,7 +11,7 @@ repository = "https://github.com/iced-rs/iced"
bitflags = "1.2"
[dependencies.palette]
-version = "0.5"
+version = "0.6"
optional = true
[target.'cfg(target_arch = "wasm32")'.dependencies]
diff --git a/examples/color_palette/Cargo.toml b/examples/color_palette/Cargo.toml
index 23670b46..8fd37202 100644
--- a/examples/color_palette/Cargo.toml
+++ b/examples/color_palette/Cargo.toml
@@ -7,4 +7,4 @@ publish = false
[dependencies]
iced = { path = "../..", features = ["canvas", "palette"] }
-palette = "0.5.0"
+palette = "0.6.0"
diff --git a/examples/color_palette/src/main.rs b/examples/color_palette/src/main.rs
index 5dbbd8f3..f5fab251 100644
--- a/examples/color_palette/src/main.rs
+++ b/examples/color_palette/src/main.rs
@@ -3,7 +3,7 @@ use iced::{
alignment, slider, Alignment, Canvas, Color, Column, Element, Length,
Point, Rectangle, Row, Sandbox, Settings, Size, Slider, Text, Vector,
};
-use palette::{self, Hsl, Limited, Srgb};
+use palette::{self, convert::FromColor, Hsl, Srgb};
use std::marker::PhantomData;
use std::ops::RangeInclusive;
@@ -49,25 +49,25 @@ impl Sandbox for ColorPalette {
fn update(&mut self, message: Message) {
let srgb = match message {
Message::RgbColorChanged(rgb) => palette::Srgb::from(rgb),
- Message::HslColorChanged(hsl) => palette::Srgb::from(hsl),
- Message::HsvColorChanged(hsv) => palette::Srgb::from(hsv),
- Message::HwbColorChanged(hwb) => palette::Srgb::from(hwb),
- Message::LabColorChanged(lab) => palette::Srgb::from(lab),
- Message::LchColorChanged(lch) => palette::Srgb::from(lch),
+ Message::HslColorChanged(hsl) => palette::Srgb::from_color(hsl),
+ Message::HsvColorChanged(hsv) => palette::Srgb::from_color(hsv),
+ Message::HwbColorChanged(hwb) => palette::Srgb::from_color(hwb),
+ Message::LabColorChanged(lab) => palette::Srgb::from_color(lab),
+ Message::LchColorChanged(lch) => palette::Srgb::from_color(lch),
};
- self.theme = Theme::new(srgb.clamp());
+ self.theme = Theme::new(srgb);
}
fn view(&mut self) -> Element<Message> {
let base = self.theme.base;
let srgb = palette::Srgb::from(base);
- let hsl = palette::Hsl::from(srgb);
- let hsv = palette::Hsv::from(srgb);
- let hwb = palette::Hwb::from(srgb);
- let lab = palette::Lab::from(srgb);
- let lch = palette::Lch::from(srgb);
+ let hsl = palette::Hsl::from_color(srgb);
+ let hsv = palette::Hsv::from_color(srgb);
+ let hwb = palette::Hwb::from_color(srgb);
+ let lab = palette::Lab::from_color(srgb);
+ let lch = palette::Lch::from_color(srgb);
Column::new()
.padding(10)
@@ -98,7 +98,7 @@ impl Theme {
let base = base.into();
// Convert to HSL color for manipulation
- let hsl = Hsl::from(Srgb::from(base));
+ let hsl = Hsl::from_color(Srgb::from(base));
let lower = [
hsl.shift_hue(-135.0).lighten(0.075),
@@ -117,12 +117,12 @@ impl Theme {
Theme {
lower: lower
.iter()
- .map(|&color| Srgb::from(color).clamp().into())
+ .map(|&color| Srgb::from_color(color).into())
.collect(),
base,
higher: higher
.iter()
- .map(|&color| Srgb::from(color).clamp().into())
+ .map(|&color| Srgb::from_color(color).into())
.collect(),
canvas_cache: canvas::Cache::default(),
}
@@ -207,14 +207,14 @@ impl Theme {
text.vertical_alignment = alignment::Vertical::Bottom;
- let hsl = Hsl::from(Srgb::from(self.base));
+ let hsl = Hsl::from_color(Srgb::from(self.base));
for i in 0..self.len() {
let pct = (i as f32 + 1.0) / (self.len() as f32 + 1.0);
let graded = Hsl {
lightness: 1.0 - pct,
..hsl
};
- let color: Color = Srgb::from(graded.clamp()).into();
+ let color: Color = Srgb::from_color(graded).into();
let anchor = Point {
x: (i as f32) * box_size.width,
diff --git a/examples/download_progress/src/download.rs b/examples/download_progress/src/download.rs
index 7db1206b..39dd843f 100644
--- a/examples/download_progress/src/download.rs
+++ b/examples/download_progress/src/download.rs
@@ -70,9 +70,7 @@ async fn download<I: Copy>(
// We do not let the stream die, as it would start a
// new download repeatedly if the user is not careful
// in case of errors.
- let _: () = iced::futures::future::pending().await;
-
- unreachable!()
+ iced::futures::future::pending().await
}
}
}
diff --git a/graphics/src/widget/canvas/frame.rs b/graphics/src/widget/canvas/frame.rs
index a3449605..8e198b29 100644
--- a/graphics/src/widget/canvas/frame.rs
+++ b/graphics/src/widget/canvas/frame.rs
@@ -265,12 +265,30 @@ impl Frame {
f(&mut frame);
- self.primitives.push(Primitive::Clip {
- bounds: region,
- content: Box::new(Primitive::Translate {
- translation: Vector::new(region.x, region.y),
- content: Box::new(frame.into_geometry().into_primitive()),
- }),
+ let primitives = frame.into_primitives();
+
+ let (text, meshes) = primitives
+ .into_iter()
+ .partition(|primitive| matches!(primitive, Primitive::Text { .. }));
+
+ let translation = Vector::new(region.x, region.y);
+
+ self.primitives.push(Primitive::Group {
+ primitives: vec![
+ Primitive::Translate {
+ translation,
+ content: Box::new(Primitive::Group { primitives: meshes }),
+ },
+ Primitive::Translate {
+ translation,
+ content: Box::new(Primitive::Clip {
+ bounds: region,
+ content: Box::new(Primitive::Group {
+ primitives: text,
+ }),
+ }),
+ },
+ ],
});
}
@@ -308,7 +326,13 @@ impl Frame {
}
/// Produces the [`Geometry`] representing everything drawn on the [`Frame`].
- pub fn into_geometry(mut self) -> Geometry {
+ pub fn into_geometry(self) -> Geometry {
+ Geometry::from_primitive(Primitive::Group {
+ primitives: self.into_primitives(),
+ })
+ }
+
+ fn into_primitives(mut self) -> Vec<Primitive> {
if !self.buffers.indices.is_empty() {
self.primitives.push(Primitive::Mesh2D {
buffers: triangle::Mesh2D {
@@ -319,9 +343,7 @@ impl Frame {
});
}
- Geometry::from_primitive(Primitive::Group {
- primitives: self.primitives,
- })
+ self.primitives
}
}
diff --git a/graphics/src/widget/canvas/geometry.rs b/graphics/src/widget/canvas/geometry.rs
index 8915cda1..e8ac621d 100644
--- a/graphics/src/widget/canvas/geometry.rs
+++ b/graphics/src/widget/canvas/geometry.rs
@@ -22,9 +22,3 @@ impl Geometry {
self.0
}
}
-
-impl From<Geometry> for Primitive {
- fn from(geometry: Geometry) -> Primitive {
- geometry.0
- }
-}
diff --git a/wgpu/src/window/compositor.rs b/wgpu/src/window/compositor.rs
index 6feb795b..64c53607 100644
--- a/wgpu/src/window/compositor.rs
+++ b/wgpu/src/window/compositor.rs
@@ -53,7 +53,7 @@ impl Compositor {
.using_resolution(adapter.limits());
#[cfg(not(target_arch = "wasm32"))]
- let limits = wgpu::Limits::default();
+ let limits = wgpu::Limits::downlevel_defaults();
let (device, queue) = adapter
.request_device(