summaryrefslogtreecommitdiffstats
path: root/graphics/src/widget/canvas/fill.rs
diff options
context:
space:
mode:
authorLibravatar shan <shankern@protonmail.com>2022-10-06 16:57:38 -0700
committerLibravatar shan <shankern@protonmail.com>2022-10-06 18:59:54 -0700
commit9c7bf417ac9c1ac72bcc55aa3cd5e8eb962243a2 (patch)
tree9e6b027d45bf858b8ed00d1e9285bdbcffb3b6e8 /graphics/src/widget/canvas/fill.rs
parentf4878a1a66a2e95e9430a8ccee8da823d2cb17ff (diff)
downloadiced-9c7bf417ac9c1ac72bcc55aa3cd5e8eb962243a2.tar.gz
iced-9c7bf417ac9c1ac72bcc55aa3cd5e8eb962243a2.tar.bz2
iced-9c7bf417ac9c1ac72bcc55aa3cd5e8eb962243a2.zip
Added support for gradients to respect current frame transform.
Diffstat (limited to 'graphics/src/widget/canvas/fill.rs')
-rw-r--r--graphics/src/widget/canvas/fill.rs14
1 files changed, 10 insertions, 4 deletions
diff --git a/graphics/src/widget/canvas/fill.rs b/graphics/src/widget/canvas/fill.rs
index 55cb3966..768c2b9c 100644
--- a/graphics/src/widget/canvas/fill.rs
+++ b/graphics/src/widget/canvas/fill.rs
@@ -3,6 +3,7 @@
use crate::gradient::Gradient;
use crate::layer::mesh;
use iced_native::Color;
+use crate::widget::canvas::frame::Transform;
/// The style used to fill geometry.
#[derive(Debug, Clone)]
@@ -50,11 +51,16 @@ pub enum Style<'a> {
Gradient(&'a Gradient),
}
-impl<'a> Into<mesh::Style> for Style<'a> {
- fn into(self) -> mesh::Style {
+impl<'a> Style<'a> {
+ /// Converts a fill's [Style] to a [mesh::Style] for use in the renderer's shader.
+ pub(crate) fn as_mesh_style(&self, transform: &Transform) -> mesh::Style {
match self {
- Style::Solid(color) => mesh::Style::Solid(color),
- Style::Gradient(gradient) => gradient.clone().into(),
+ Style::Solid(color) => {
+ mesh::Style::Solid(*color)
+ },
+ Style::Gradient(gradient) => {
+ mesh::Style::Gradient((*gradient).clone().transform(transform))
+ }
}
}
}