Get cell compiling

This commit is contained in:
Nathan Sobo
2023-07-14 15:20:53 -06:00
parent 0db8f681ba
commit 4b2054215a
+34 -47
View File
@@ -4,55 +4,10 @@ struct Cell {}
impl Cell {
fn new(style: CellStyle) -> Self {
Self { style }
}
fn interactive(style: Interactive<CellStyle>) -> Self {}
}
impl CellStyle {
fn interactive(self) -> Interactive<CellStyle> {
Interactive {
default: self.clone(),
hovered: self.clone(),
active: self.clone(),
disabled: self,
}
}
fn hover(self, f: impl FnOnce(&mut CellStyle)) -> Interactive<CellStyle> {
let mut style = self.interactive();
f(&mut style.hovered);
style
Self {}
}
}
fn foo() {
struct WidgetStyle {
foo: CellStyle,
bar: CellStyle,
button: Interactive<CellStyle>,
}
let mut header_style = CellStyle::default();
header_style.fill = Fill::Color(Color::red());
let style = CellStyle::default().hover(|style| {
})
let interactive = style.hover(|style| {
style.fill = Fill::Color(Color::red());
});
style.hover(|style| {
style
.fill(Color(red))
.text_color(Color(red));
})
}
struct Interactive<Style> {
default: Style,
hovered: Style,
@@ -85,6 +40,7 @@ struct CellStyle {
shadows: Vec<Shadow>,
}
#[derive(Clone, Default)]
struct CornerRadii {
top_left: f32,
top_right: f32,
@@ -92,11 +48,18 @@ struct CornerRadii {
bottom_left: f32,
}
#[derive(Clone)]
enum Fill {
Color(Color),
Svg(String),
}
impl Default for Fill {
fn default() -> Self {
Fill::Color(Color::default())
}
}
#[derive(Clone, Default)]
struct Border {
color: Color,
width: f32,
@@ -106,22 +69,35 @@ struct Border {
right: bool,
}
#[derive(Clone, Copy)]
enum Length {
Fixed(f32),
Auto(f32),
}
impl Default for Length {
fn default() -> Self {
Length::Auto(1.)
}
}
#[derive(Clone, Copy, Default)]
enum Axis {
X,
#[default]
Y,
Z,
}
#[derive(Clone, Copy, Default)]
enum Overflow {
#[default]
Visible,
Hidden,
Auto,
}
#[derive(Clone, Copy)]
enum Gap {
Fixed(f32),
Around,
@@ -129,22 +105,33 @@ enum Gap {
Even,
}
impl Default for Gap {
fn default() -> Self {
Gap::Fixed(0.)
}
}
#[derive(Clone, Copy, Default)]
struct Shadow {
offset: Vector2F,
blur: f32,
color: Color,
}
#[derive(Clone, Copy, Default)]
enum FontStyle {
#[default]
Normal,
Italic,
Oblique,
}
#[derive(Clone, Copy, Default)]
enum FontWeight {
Thin,
ExtraLight,
Light,
#[default]
Normal,
Medium,
Semibold,