diff options
| author | 2022-10-07 16:55:55 -0700 | |
|---|---|---|
| committer | 2022-10-07 16:55:55 -0700 | |
| commit | fd5e1e5ab0b712cd6719733b5a68602176ae5ec4 (patch) | |
| tree | 40c054f30aaebb1befeb25fb8852fd1fe70402b8 /graphics/src/widget/canvas | |
| parent | a4a1262fa2d625be5ad7a37e409e0e9c399b09b6 (diff) | |
| download | iced-fd5e1e5ab0b712cd6719733b5a68602176ae5ec4.tar.gz iced-fd5e1e5ab0b712cd6719733b5a68602176ae5ec4.tar.bz2 iced-fd5e1e5ab0b712cd6719733b5a68602176ae5ec4.zip  | |
Adjusted gradient transform function to be more readable.
Diffstat (limited to '')
| -rw-r--r-- | graphics/src/widget/canvas/fill.rs | 10 | ||||
| -rw-r--r-- | graphics/src/widget/canvas/frame.rs | 19 | ||||
| -rw-r--r-- | graphics/src/widget/canvas/stroke.rs | 16 | 
3 files changed, 24 insertions, 21 deletions
diff --git a/graphics/src/widget/canvas/fill.rs b/graphics/src/widget/canvas/fill.rs index 477a7020..34cc5e50 100644 --- a/graphics/src/widget/canvas/fill.rs +++ b/graphics/src/widget/canvas/fill.rs @@ -67,13 +67,9 @@ impl<'a> Style<'a> {              Style::Solid(color) => {                  mesh::Style::Solid(*color)              }, -            Style::Gradient(gradient) => { -                let mut gradient = (*gradient).clone(); -                let coordinates = gradient.coords(); -                transform.transform_point(coordinates.0); -                transform.transform_point(coordinates.1); -                mesh::Style::Gradient(gradient) -            } +            Style::Gradient(gradient) => mesh::Style::Gradient( +                transform.transform_gradient((*gradient).clone()), +            ),          }      }  } diff --git a/graphics/src/widget/canvas/frame.rs b/graphics/src/widget/canvas/frame.rs index d505cef7..1660fd6e 100644 --- a/graphics/src/widget/canvas/frame.rs +++ b/graphics/src/widget/canvas/frame.rs @@ -3,12 +3,13 @@ use std::borrow::Cow;  use iced_native::{Point, Rectangle, Size, Vector}; +use crate::gradient::Gradient; +use crate::layer::mesh;  use crate::triangle; +use crate::triangle::Vertex2D;  use crate::widget::canvas::{path, Fill, Geometry, Path, Stroke, Text};  use crate::Primitive; -use crate::layer::mesh; -use crate::triangle::Vertex2D;  use lyon::tessellation;  /// The frame of a [`Canvas`]. @@ -38,12 +39,24 @@ pub(crate) struct Transform {  impl Transform {      /// Transforms the given [Point] by the transformation matrix. -    pub(crate) fn transform_point(&self, point: &mut Point) { +    fn transform_point(&self, point: &mut Point) {          let transformed =              self.raw.transform_point(Point2D::new(point.x, point.y));          point.x = transformed.x;          point.y = transformed.y;      } + +    pub(crate) fn transform_gradient( +        &self, +        mut gradient: Gradient, +    ) -> Gradient { +        let coords = match &mut gradient { +            Gradient::Linear(linear) => (&mut linear.start, &mut linear.end), +        }; +        self.transform_point(coords.0); +        self.transform_point(coords.1); +        gradient +    }  }  impl Frame { diff --git a/graphics/src/widget/canvas/stroke.rs b/graphics/src/widget/canvas/stroke.rs index 6e49f994..2f02a2f3 100644 --- a/graphics/src/widget/canvas/stroke.rs +++ b/graphics/src/widget/canvas/stroke.rs @@ -1,9 +1,9 @@  //! Create lines from a [crate::widget::canvas::Path] and assigns them various attributes/styles. -use iced_native::Color;  use crate::gradient::Gradient;  use crate::layer::mesh;  use crate::widget::canvas::frame::Transform; +use iced_native::Color;  /// The style of a stroke.  #[derive(Debug, Clone)] @@ -73,16 +73,10 @@ 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) => { -                let mut gradient = (*gradient).clone(); -                let coordinates = gradient.coords(); -                transform.transform_point(coordinates.0); -                transform.transform_point(coordinates.1); -                mesh::Style::Gradient(gradient) -            } +            Style::Solid(color) => mesh::Style::Solid(*color), +            Style::Gradient(gradient) => mesh::Style::Gradient( +                transform.transform_gradient((*gradient).clone()), +            ),          }      }  }  | 
