summaryrefslogtreecommitdiffstats
path: root/graphics/src/widget/canvas/fill.rs
diff options
context:
space:
mode:
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))
+ }
}
}
}