use egui::{NumExt, Rangef, Vec2};
#[derive(Debug, Clone)]
pub struct AxisParameters {
pub name: Option<String>,
pub default_dimension: Option<f32>,
pub dimension_range: Rangef,
pub resizable: bool,
pub monospace: bool,
pub expandable: bool,
}
impl Default for AxisParameters {
fn default() -> Self {
Self {
name: None,
default_dimension: None,
dimension_range: Rangef::new(10.0, f32::INFINITY),
resizable: true,
monospace: false,
expandable: false,
}
}
}
impl AxisParameters {
pub fn name(mut self, s: impl Into<String>) -> Self {
self.name = Some(s.into());
self
}
pub fn default_dimension(mut self, value: f32) -> Self {
debug_assert!(value >= 0.0);
self.default_dimension = Some(value.at_least(0.0));
self
}
pub fn minimum_dimension(mut self, value: f32) -> Self {
debug_assert!(value >= 0.0);
self.dimension_range.min = value.at_least(0.0);
self
}
pub fn maximum_dimension(mut self, value: f32) -> Self {
debug_assert!(value >= 0.0);
self.dimension_range.max = value.at_least(0.0);
self
}
pub fn resizable(mut self, value: bool) -> Self {
self.resizable = value;
self
}
pub fn monospace(mut self, value: bool) -> Self {
self.monospace = value;
self
}
pub fn expandable(mut self, value: bool) -> Self {
self.expandable = value;
self
}
}
pub(crate) struct DeferredTableParameters<'a> {
pub(crate) default_cell_size: Option<Vec2>,
pub(crate) zero_based_headers: bool,
pub(crate) highlight_hovered_cell: bool,
pub(crate) min_size: Vec2,
pub(crate) column_parameters: Option<&'a Vec<AxisParameters>>,
pub(crate) row_parameters: Option<&'a Vec<AxisParameters>>,
pub(crate) selectable_rows: bool,
}
impl<'a> Default for DeferredTableParameters<'a> {
fn default() -> Self {
Self {
default_cell_size: None,
zero_based_headers: false,
highlight_hovered_cell: false,
min_size: Vec2::new(400.0, 200.0),
column_parameters: None,
row_parameters: None,
selectable_rows: true,
}
}
}