diff options
author | 2022-10-07 11:41:50 -0700 | |
---|---|---|
committer | 2022-10-07 12:01:07 -0700 | |
commit | 12a87c54eb68b992676060c80e518ffb29445cfc (patch) | |
tree | b3fba16f2dd95a084cdbc3850f59a049c103c355 /graphics/src/gradient.rs | |
parent | f9a6efcaa03728f43aaa105af8936c1ed4778388 (diff) | |
download | iced-12a87c54eb68b992676060c80e518ffb29445cfc.tar.gz iced-12a87c54eb68b992676060c80e518ffb29445cfc.tar.bz2 iced-12a87c54eb68b992676060c80e518ffb29445cfc.zip |
Added support for relative positioning of gradient fills. Addressed some PR feedback.
Diffstat (limited to 'graphics/src/gradient.rs')
-rw-r--r-- | graphics/src/gradient.rs | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/graphics/src/gradient.rs b/graphics/src/gradient.rs index d785fb2a..e1984854 100644 --- a/graphics/src/gradient.rs +++ b/graphics/src/gradient.rs @@ -1,9 +1,10 @@ //! For creating a Gradient. mod linear; -pub use crate::gradient::linear::Linear; +pub use crate::gradient::linear::{Linear, Position, Location}; use crate::widget::canvas::frame::Transform; -use crate::{Point, Color}; +use crate::Color; +use crate::widget::canvas::{Fill, fill}; #[derive(Debug, Clone, PartialEq)] /// A fill which transitions colors progressively along a direction, either linearly, radially (TBD), @@ -25,18 +26,27 @@ pub struct ColorStop { impl Gradient { /// Creates a new linear [`linear::Builder`]. - pub fn linear(start: Point, end: Point) -> linear::Builder { - linear::Builder::new(start, end) + pub fn linear(position: impl Into<Position>) -> linear::Builder { + linear::Builder::new(position.into()) } /// Modifies the start & end stops of the gradient to have a proper transform value. pub(crate) fn transform(mut self, transform: &Transform) -> Self { match &mut self { Gradient::Linear(linear) => { - linear.start = transform.apply_to(linear.start); - linear.end = transform.apply_to(linear.end); + linear.start = transform.transform_point(linear.start); + linear.end = transform.transform_point(linear.end); } } self } } + +impl<'a> Into<Fill<'a>> for &'a Gradient { + fn into(self) -> Fill<'a> { + Fill { + style: fill::Style::Gradient(self), + .. Default::default() + } + } +} |