
Features: * Scales dash spacing with border width. * Laying out dashes around rounded corners. * Varying border widths with rounded corners - now uses an ellipse for the inner edge of the border. * When there are no rounded corners, each straight border is laid out separately, so that the dashes to meet at the corners. * All sides of each dash are antialiased.   Release Notes: - N/A --------- Co-authored-by: Michael Sloan <michael@zed.dev> Co-authored-by: Ben <ben@zed.dev>
106 lines
3.4 KiB
Rust
106 lines
3.4 KiB
Rust
use gpui::{
|
|
div, prelude::*, px, rgb, size, App, Application, Bounds, Context, SharedString, Window,
|
|
WindowBounds, WindowOptions,
|
|
};
|
|
|
|
struct HelloWorld {
|
|
text: SharedString,
|
|
}
|
|
|
|
impl Render for HelloWorld {
|
|
fn render(&mut self, _window: &mut Window, _cx: &mut Context<Self>) -> impl IntoElement {
|
|
div()
|
|
.flex()
|
|
.flex_col()
|
|
.gap_3()
|
|
.bg(rgb(0x505050))
|
|
.size(px(500.0))
|
|
.justify_center()
|
|
.items_center()
|
|
.shadow_lg()
|
|
.border_1()
|
|
.border_color(rgb(0x0000ff))
|
|
.text_xl()
|
|
.text_color(rgb(0xffffff))
|
|
.child(format!("Hello, {}!", &self.text))
|
|
.child(
|
|
div()
|
|
.flex()
|
|
.gap_2()
|
|
.child(
|
|
div()
|
|
.size_8()
|
|
.bg(gpui::red())
|
|
.border_1()
|
|
.border_dashed()
|
|
.rounded_md()
|
|
.border_color(gpui::white()),
|
|
)
|
|
.child(
|
|
div()
|
|
.size_8()
|
|
.bg(gpui::green())
|
|
.border_1()
|
|
.border_dashed()
|
|
.rounded_md()
|
|
.border_color(gpui::white()),
|
|
)
|
|
.child(
|
|
div()
|
|
.size_8()
|
|
.bg(gpui::blue())
|
|
.border_1()
|
|
.border_dashed()
|
|
.rounded_md()
|
|
.border_color(gpui::white()),
|
|
)
|
|
.child(
|
|
div()
|
|
.size_8()
|
|
.bg(gpui::yellow())
|
|
.border_1()
|
|
.border_dashed()
|
|
.rounded_md()
|
|
.border_color(gpui::white()),
|
|
)
|
|
.child(
|
|
div()
|
|
.size_8()
|
|
.bg(gpui::black())
|
|
.border_1()
|
|
.border_dashed()
|
|
.rounded_md()
|
|
.rounded_md()
|
|
.border_color(gpui::white()),
|
|
)
|
|
.child(
|
|
div()
|
|
.size_8()
|
|
.bg(gpui::white())
|
|
.border_1()
|
|
.border_dashed()
|
|
.rounded_md()
|
|
.border_color(gpui::black()),
|
|
),
|
|
)
|
|
}
|
|
}
|
|
|
|
fn main() {
|
|
Application::new().run(|cx: &mut App| {
|
|
let bounds = Bounds::centered(None, size(px(500.), px(500.0)), cx);
|
|
cx.open_window(
|
|
WindowOptions {
|
|
window_bounds: Some(WindowBounds::Windowed(bounds)),
|
|
..Default::default()
|
|
},
|
|
|_, cx| {
|
|
cx.new(|_| HelloWorld {
|
|
text: "World".into(),
|
|
})
|
|
},
|
|
)
|
|
.unwrap();
|
|
cx.activate(true);
|
|
});
|
|
}
|