diff options
author | 2025-01-26 04:21:44 +0100 | |
---|---|---|
committer | 2025-01-26 04:29:57 +0100 | |
commit | e90ff41edbf00c77be3762586a8ca93be1b17d59 (patch) | |
tree | 9a719a18ae0d1500fa748990cbe88e13fbc7b111 /core/src | |
parent | 3428a3d2afb766c264453a58e15d33953d438238 (diff) | |
download | iced-e90ff41edbf00c77be3762586a8ca93be1b17d59.tar.gz iced-e90ff41edbf00c77be3762586a8ca93be1b17d59.tar.bz2 iced-e90ff41edbf00c77be3762586a8ca93be1b17d59.zip |
Implement `pop` widget :tada:
Diffstat (limited to 'core/src')
-rw-r--r-- | core/src/rectangle.rs | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/core/src/rectangle.rs b/core/src/rectangle.rs index cff33991..14d2a2e8 100644 --- a/core/src/rectangle.rs +++ b/core/src/rectangle.rs @@ -143,6 +143,20 @@ impl Rectangle<f32> { && point.y < self.y + self.height } + /// Returns the minimum distance from the given [`Point`] to any of the edges + /// of the [`Rectangle`]. + pub fn distance(&self, point: Point) -> f32 { + let center = self.center(); + + let distance_x = + ((point.x - center.x).abs() - self.width / 2.0).max(0.0); + + let distance_y = + ((point.y - center.y).abs() - self.height / 2.0).max(0.0); + + distance_x.hypot(distance_y) + } + /// Returns true if the current [`Rectangle`] is completely within the given /// `container`. pub fn is_within(&self, container: &Rectangle) -> bool { |