Added support for gradients to respect current frame transform.

This commit is contained in:
shan 2022-10-06 16:57:38 -07:00
parent f4878a1a66
commit 9c7bf417ac
7 changed files with 93 additions and 56 deletions

View file

@ -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))
}
}
}
}