diff options
author | 2024-03-05 22:38:27 +0100 | |
---|---|---|
committer | 2024-03-05 22:38:27 +0100 | |
commit | a43afc791e8f78b03d802f980a10f32dc932f0b2 (patch) | |
tree | 9bfc21e139dc5572dfe84734bb3365aeb803a838 /style/src/rule.rs | |
parent | 420f49bef5f6938868a84086e729deaa1df9107f (diff) | |
download | iced-a43afc791e8f78b03d802f980a10f32dc932f0b2.tar.gz iced-a43afc791e8f78b03d802f980a10f32dc932f0b2.tar.bz2 iced-a43afc791e8f78b03d802f980a10f32dc932f0b2.zip |
Simplify theming for `Rule` widget
Diffstat (limited to 'style/src/rule.rs')
-rw-r--r-- | style/src/rule.rs | 89 |
1 files changed, 0 insertions, 89 deletions
diff --git a/style/src/rule.rs b/style/src/rule.rs deleted file mode 100644 index 12980da7..00000000 --- a/style/src/rule.rs +++ /dev/null @@ -1,89 +0,0 @@ -//! Change the appearance of a rule. -use crate::core::border; -use crate::core::Color; - -/// The appearance of a rule. -#[derive(Debug, Clone, Copy)] -pub struct Appearance { - /// The color of the rule. - pub color: Color, - /// The width (thickness) of the rule line. - pub width: u16, - /// The radius of the line corners. - pub radius: border::Radius, - /// The [`FillMode`] of the rule. - pub fill_mode: FillMode, -} - -/// A set of rules that dictate the style of a rule. -pub trait StyleSheet { - /// The supported style of the [`StyleSheet`]. - type Style: Default; - - /// Produces the style of a rule. - fn appearance(&self, style: &Self::Style) -> Appearance; -} - -/// The fill mode of a rule. -#[derive(Debug, Clone, Copy)] -pub enum FillMode { - /// Fill the whole length of the container. - Full, - /// Fill a percent of the length of the container. The rule - /// will be centered in that container. - /// - /// The range is `[0.0, 100.0]`. - Percent(f32), - /// Uniform offset from each end, length units. - Padded(u16), - /// Different offset on each end of the rule, length units. - /// First = top or left. - 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) - } - } - } -} |