1use gpui::*;
2
3#[derive(IntoElement)]
4struct ImageFromResource {
5 text: SharedString,
6 resource: SharedUrl,
7}
8
9impl RenderOnce for ImageFromResource {
10 fn render(self, _: &mut WindowContext) -> impl IntoElement {
11 div().child(
12 div()
13 .flex_row()
14 .size_full()
15 .gap_4()
16 .child(self.text)
17 .child(img(self.resource).w(px(512.0)).h(px(512.0))),
18 )
19 }
20}
21
22struct ImageShowcase {
23 local_resource: SharedUrl,
24 remote_resource: SharedUrl,
25}
26
27impl Render for ImageShowcase {
28 fn render(&mut self, _cx: &mut ViewContext<Self>) -> impl IntoElement {
29 div()
30 .flex()
31 .flex_row()
32 .size_full()
33 .justify_center()
34 .items_center()
35 .gap_8()
36 .bg(rgb(0xFFFFFF))
37 .child(ImageFromResource {
38 text: "Image loaded from a local file".into(),
39 resource: self.local_resource.clone(),
40 })
41 .child(ImageFromResource {
42 text: "Image loaded from a remote resource".into(),
43 resource: self.remote_resource.clone(),
44 })
45 }
46}
47
48fn main() {
49 env_logger::init();
50
51 App::new().run(|cx: &mut AppContext| {
52 cx.open_window(WindowOptions::default(), |cx| {
53 cx.new_view(|_cx| ImageShowcase {
54 local_resource: SharedUrl::file("../zed/resources/app-icon.png"),
55 remote_resource: SharedUrl::network("https://picsum.photos/512/512"),
56 })
57 });
58 });
59}