Add Rounding::at_least and Rounding::at_most

This commit is contained in:
Emil Ernerfeldt 2022-04-27 10:05:09 +02:00
parent e3b77e320a
commit 06802cb0a0
3 changed files with 24 additions and 13 deletions

View file

@ -90,13 +90,8 @@ fn color_button(ui: &mut Ui, color: Color32, open: bool) -> Response {
ui.painter().rect_filled(left_half, 0.0, color); ui.painter().rect_filled(left_half, 0.0, color);
ui.painter().rect_filled(right_half, 0.0, color.to_opaque()); ui.painter().rect_filled(right_half, 0.0, color.to_opaque());
let rounding = Rounding {
nw: visuals.rounding.nw.at_most(2.0),
ne: visuals.rounding.ne.at_most(2.0),
sw: visuals.rounding.sw.at_most(2.0),
se: visuals.rounding.se.at_most(2.0),
};
let rounding = visuals.rounding.at_most(2.0);
ui.painter() ui.painter()
.rect_stroke(rect, rounding, (2.0, visuals.bg_fill)); // fill is intentional, because default style has no border .rect_stroke(rect, rounding, (2.0, visuals.bg_fill)); // fill is intentional, because default style has no border
} }

View file

@ -535,6 +535,28 @@ impl Rounding {
pub fn is_same(&self) -> bool { pub fn is_same(&self) -> bool {
self.nw == self.ne && self.nw == self.sw && self.nw == self.se self.nw == self.ne && self.nw == self.sw && self.nw == self.se
} }
/// Make sure each corner has a rounding of at least this.
#[inline]
pub fn at_least(&self, min: f32) -> Self {
Self {
nw: self.nw.max(min),
ne: self.ne.max(min),
sw: self.sw.max(min),
se: self.se.max(min),
}
}
/// Make sure each corner has a rounding of at most this.
#[inline]
pub fn at_most(&self, max: f32) -> Self {
Self {
nw: self.nw.min(max),
ne: self.ne.min(max),
sw: self.sw.min(max),
se: self.se.min(max),
}
}
} }
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------

View file

@ -257,13 +257,7 @@ pub mod path {
let half_width = rect.width() * 0.5; let half_width = rect.width() * 0.5;
let half_height = rect.height() * 0.5; let half_height = rect.height() * 0.5;
let max_cr = half_width.min(half_height); let max_cr = half_width.min(half_height);
rounding.at_most(max_cr).at_least(0.0)
Rounding {
nw: rounding.nw.at_most(max_cr).at_least(0.0),
ne: rounding.ne.at_most(max_cr).at_least(0.0),
sw: rounding.sw.at_most(max_cr).at_least(0.0),
se: rounding.se.at_most(max_cr).at_least(0.0),
}
} }
} }