bones_framework/render/ui/
widgets.rs1mod bordered_button;
4mod bordered_frame;
5
6pub use bordered_button::*;
7pub use bordered_frame::*;
8
9use crate::prelude::*;
10
11#[derive(HasSchema, Clone, Debug)]
15#[repr(C)]
16pub struct BorderImageMeta {
17 pub image: Handle<Image>,
19 pub image_size: UVec2,
21 pub border_size: MarginMeta,
23 pub scale: f32,
27}
28
29impl Default for BorderImageMeta {
30 fn default() -> Self {
31 Self {
32 image: Default::default(),
33 image_size: Default::default(),
34 border_size: Default::default(),
35 scale: 1.0,
36 }
37 }
38}
39
40#[derive(HasSchema, Clone, Debug, Default)]
42#[repr(C)]
43pub struct ButtonThemeMeta {
44 pub font: FontMeta,
46 pub padding: MarginMeta,
48 pub borders: ButtonBordersMeta,
50}
51
52#[derive(HasSchema, Clone, Debug, Default)]
54#[repr(C)]
55pub struct ButtonBordersMeta {
56 pub default: BorderImageMeta,
58 pub focused: BorderImageMeta,
60 pub clicked: BorderImageMeta,
62}
63
64#[derive(HasSchema, Default, serde::Deserialize, Clone, Copy, Debug)]
66#[repr(C)]
67pub struct MarginMeta {
68 pub top: f32,
70 pub bottom: f32,
72 pub left: f32,
74 pub right: f32,
76}
77
78impl From<MarginMeta> for egui::style::Margin {
79 fn from(m: MarginMeta) -> Self {
80 Self {
81 left: m.left,
82 right: m.right,
83 top: m.top,
84 bottom: m.bottom,
85 }
86 }
87}