pub trait ScrollbarStyle {
fn track_thickness(&self) -> f64;
fn thumb_min_length(&self) -> f64;
fn thumb_radius(&self) -> f64;
fn track_padding(&self) -> f64;
fn draw_track_bg(&self) -> bool;
}
pub struct StandardScrollbarStyle;
impl Default for StandardScrollbarStyle {
fn default() -> Self {
Self
}
}
impl ScrollbarStyle for StandardScrollbarStyle {
fn track_thickness(&self) -> f64 { 8.0 }
fn thumb_min_length(&self) -> f64 { 30.0 }
fn thumb_radius(&self) -> f64 { 4.0 }
fn track_padding(&self) -> f64 { 2.0 }
fn draw_track_bg(&self) -> bool { false }
}
pub struct CompactScrollbarStyle;
impl Default for CompactScrollbarStyle {
fn default() -> Self {
Self
}
}
impl ScrollbarStyle for CompactScrollbarStyle {
fn track_thickness(&self) -> f64 { 4.0 }
fn thumb_min_length(&self) -> f64 { 24.0 }
fn thumb_radius(&self) -> f64 { 2.0 }
fn track_padding(&self) -> f64 { 0.0 }
fn draw_track_bg(&self) -> bool { false }
}
pub struct SignalScrollbarStyle;
impl Default for SignalScrollbarStyle {
fn default() -> Self {
Self
}
}
impl ScrollbarStyle for SignalScrollbarStyle {
fn track_thickness(&self) -> f64 { 6.0 }
fn thumb_min_length(&self) -> f64 { 16.0 }
fn thumb_radius(&self) -> f64 { 0.0 }
fn track_padding(&self) -> f64 { 0.0 }
fn draw_track_bg(&self) -> bool { true }
}
pub type DefaultScrollbarStyle = StandardScrollbarStyle;