56 lines
1,012 B
Rust
56 lines
1,012 B
Rust
![]() |
#[derive(Deserialize, Serialize)]
|
||
|
pub struct Vec2 {
|
||
|
pub x: f32,
|
||
|
pub y: f32,
|
||
|
}
|
||
|
|
||
|
#[derive(Deserialize, Serialize)]
|
||
|
pub struct Rect {
|
||
|
pub pos: Vec2,
|
||
|
pub size: Vec2,
|
||
|
}
|
||
|
|
||
|
impl Rect {
|
||
|
pub fn contains(&self, p: &Vec2) -> bool {
|
||
|
self.pos.x <= p.x
|
||
|
&& p.x <= self.pos.x + self.size.x
|
||
|
&& self.pos.y <= p.y
|
||
|
&& p.y <= self.pos.y + self.size.y
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[derive(Deserialize)]
|
||
|
pub struct Input {
|
||
|
pub screen_size: Vec2,
|
||
|
pub mouse_pos: Vec2,
|
||
|
}
|
||
|
|
||
|
#[derive(Serialize)]
|
||
|
#[serde(rename_all = "snake_case")]
|
||
|
pub enum TextAlign {
|
||
|
Start,
|
||
|
Center,
|
||
|
End,
|
||
|
}
|
||
|
|
||
|
#[derive(Serialize)]
|
||
|
#[serde(rename_all = "snake_case", tag = "kind")]
|
||
|
pub enum PaintCmd {
|
||
|
Clear {
|
||
|
fill_style: String,
|
||
|
},
|
||
|
RoundedRect {
|
||
|
fill_style: String,
|
||
|
pos: Vec2,
|
||
|
size: Vec2,
|
||
|
corner_radius: f32,
|
||
|
},
|
||
|
Text {
|
||
|
fill_style: String,
|
||
|
font: String,
|
||
|
pos: Vec2,
|
||
|
text: String,
|
||
|
text_align: TextAlign,
|
||
|
},
|
||
|
}
|