pub trait RadioStyle {
fn row_height(&self) -> f64;
fn gap(&self) -> f64;
fn outer_radius(&self) -> f64;
fn inner_radius(&self) -> f64;
fn row_corner_radius(&self) -> f64 { 6.0 }
fn ring_stroke_width(&self) -> f64 { 1.5 }
fn circle_offset_x(&self) -> f64 { self.outer_radius() + 4.0 }
fn circle_offset_y(&self) -> f64 { 14.0 }
fn label_offset_x(&self) -> f64 { self.outer_radius() * 2.0 + 16.0 }
fn label_offset_y(&self) -> f64 { 4.0 }
fn desc_offset_y(&self) -> f64 { 24.0 }
fn label_font_size(&self) -> f64 { 13.0 }
fn desc_font_size(&self) -> f64 { 11.0 }
}
pub struct DefaultRadioStyle;
impl RadioStyle for DefaultRadioStyle {
fn row_height(&self) -> f64 { 52.0 }
fn gap(&self) -> f64 { 8.0 }
fn outer_radius(&self) -> f64 { 7.0 }
fn inner_radius(&self) -> f64 { 4.0 }
}
pub trait RadioPairStyle {
fn radio_radius(&self) -> f64;
fn row_height(&self) -> f64;
fn ring_stroke_width(&self) -> f64 { 1.5 }
fn inner_dot_radius(&self) -> f64 { self.radio_radius() - 2.5 }
fn label_gap(&self) -> f64 { 6.0 }
fn label_font_size(&self) -> f64 { 13.0 }
}
pub struct DefaultRadioPairStyle;
impl RadioPairStyle for DefaultRadioPairStyle {
fn radio_radius(&self) -> f64 { 5.0 }
fn row_height(&self) -> f64 { 22.0 }
}