summaryrefslogtreecommitdiffstats
path: root/graphics/src/gradient.rs
diff options
context:
space:
mode:
authorLibravatar shan <shankern@protonmail.com>2022-10-07 11:41:50 -0700
committerLibravatar shan <shankern@protonmail.com>2022-10-07 12:01:07 -0700
commit12a87c54eb68b992676060c80e518ffb29445cfc (patch)
treeb3fba16f2dd95a084cdbc3850f59a049c103c355 /graphics/src/gradient.rs
parentf9a6efcaa03728f43aaa105af8936c1ed4778388 (diff)
downloadiced-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.rs22
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()
+ }
+ }
+}