added FillMode::fill()
This commit is contained in:
parent
32561bd85c
commit
fed30ef775
2 changed files with 52 additions and 84 deletions
|
|
@ -19,6 +19,53 @@ pub enum FillMode {
|
|||
AsymmetricPadding(u16, u16),
|
||||
}
|
||||
|
||||
impl FillMode {
|
||||
/// Return the starting offset and length of the rule.
|
||||
///
|
||||
/// * `space` - The space to fill.
|
||||
///
|
||||
/// # Returns
|
||||
///
|
||||
/// * (starting_offset, length)
|
||||
pub fn fill(&self, space: f32) -> (f32, f32) {
|
||||
match *self {
|
||||
FillMode::Full => (0.0, space),
|
||||
FillMode::Percent(percent) => {
|
||||
if percent >= 100.0 {
|
||||
(0.0, space)
|
||||
} else {
|
||||
let percent_width = (space * percent / 100.0).round();
|
||||
|
||||
(((space - percent_width) / 2.0).round(), percent_width)
|
||||
}
|
||||
}
|
||||
FillMode::Padded(padding) => {
|
||||
if padding == 0 {
|
||||
(0.0, space)
|
||||
} else {
|
||||
let padding = padding as f32;
|
||||
let mut line_width = space - (padding * 2.0);
|
||||
if line_width < 0.0 {
|
||||
line_width = 0.0;
|
||||
}
|
||||
|
||||
(padding, line_width)
|
||||
}
|
||||
}
|
||||
FillMode::AsymmetricPadding(first_pad, second_pad) => {
|
||||
let first_pad = first_pad as f32;
|
||||
let second_pad = second_pad as f32;
|
||||
let mut line_width = space - first_pad - second_pad;
|
||||
if line_width < 0.0 {
|
||||
line_width = 0.0;
|
||||
}
|
||||
|
||||
(first_pad, line_width)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/// The appearance of a rule.
|
||||
#[derive(Debug, Clone, Copy)]
|
||||
pub struct Style {
|
||||
|
|
@ -26,7 +73,7 @@ pub struct Style {
|
|||
pub color: Color,
|
||||
/// The width (thickness) of the rule line.
|
||||
pub width: u16,
|
||||
/// The radius of the rectangle corners.
|
||||
/// The radius of the line corners.
|
||||
pub radius: u16,
|
||||
/// The [`FillMode`] of the rule.
|
||||
///
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue