1use bevy_color::prelude::*;
2use bevy_ecs::prelude::*;
3use bevy_ui::prelude::*;
4
5use crate::{View, ViewPack};
6
7pub trait BorderView: View {
9 fn border_node(&mut self) -> &mut BorderStyle;
11
12 fn border(mut self, border: UiRect) -> Self {
14 self.node_node().border = border;
15 self
16 }
17
18 fn border_color(mut self, border_color: impl Into<Color>) -> Self {
20 self.border_node().border_color.0 = border_color.into();
21 self
22 }
23
24 fn border_radius(mut self, border_radius: BorderRadius) -> Self {
26 self.border_node().border_radius = border_radius;
27 self
28 }
29}
30
31#[derive(Debug, Clone, PartialEq)]
33pub struct BorderStyle {
34 border_radius: BorderRadius,
36 border_color: BorderColor,
38}
39
40impl ViewPack for BorderStyle {
41 fn pack(self) -> impl Bundle {
42 (self.border_radius, self.border_color)
43 }
44}
45
46impl Default for BorderStyle {
47 fn default() -> Self {
48 Self {
49 border_radius: BorderRadius::ZERO,
50 border_color: BorderColor(Srgba::NONE.into()),
51 }
52 }
53}