summaryrefslogtreecommitdiffstats
path: root/examples/README.md
blob: 0a06a012a4e9a3b9bd3101eb06fe29789a3ad2de (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# Examples
__Iced moves fast and the `master` branch can contain breaking changes!__ If
you want to learn about a specific release, check out [the release list].

[the release list]: https://github.com/hecrj/iced/releases


## [Tour](tour.rs)
A simple UI tour showcasing different widgets that can be built using Iced.

The example can run both on native and web platforms, using the same GUI code!

[![Tour - Iced][gui_gif]][gui_gfycat]

[gui_gif]: https://thumbs.gfycat.com/VeneratedSourAurochs-small.gif
[gui_gfycat]: https://gfycat.com/veneratedsouraurochs

On native, the example uses:
  - [`iced_winit`], as a bridge between [`iced_native`] and [`winit`].
  - [`iced_wgpu`], a WIP Iced renderer built on top of [`wgpu`] and supporting
    Vulkan, Metal, D3D11, and D3D12 (OpenGL and WebGL soon!).

The web version uses [`iced_web`], which is still a work in progress. In
particular, the styling of elements is not finished yet (text color, alignment,
sizing, etc).

The __[`tour`]__ file contains all the code of the example! All the
cross-platform GUI is defined in terms of __state__, __messages__,
__update logic__ and __view logic__.

[`tour`]: tour.rs
[`iced_winit`]: ../winit
[`iced_native`]: ../native
[`iced_wgpu`]: ../wgpu
[`iced_web`]: ../web
[`winit`]: https://github.com/rust-windowing/winit
[`wgpu`]: https://github.com/gfx-rs/wgpu-rs

#### Running the native version
Use [Cargo](https://doc.rust-lang.org/cargo/reference/manifest.html#examples)
to run the example:

```
cargo run --example tour
```

#### Running the web version
Build using the `wasm32-unknown-unknown` target and use the [`wasm-bindgen`] CLI
to generate appropriate bindings in a `tour` directory.

```
cd examples
cargo build --example tour --target wasm32-unknown-unknown
wasm-bindgen ../target/wasm32-unknown-unknown/debug/examples/tour.wasm --out-dir tour --web
```

Finally, serve the `examples` directory using an HTTP server and access the
`tour.html` file.

[`wasm-bindgen`]: https://github.com/rustwasm/wasm-bindgen


## [Coffee]

Since [Iced was born in May], it has been powering the user interfaces in
[Coffee], an experimental 2D game engine.

If you want to give Iced a try without having to write your own renderer,
the __[`ui` module]__ in [Coffee] is probably your best choice as of now.

[![Tour - Coffee][coffee_gui_gif]][coffee_gui_gfycat]

[Iced was born in May]: https://github.com/hecrj/coffee/pull/35
[`ui` module]: https://docs.rs/coffee/0.3.2/coffee/ui/index.html
[Coffee]: https://github.com/hecrj/coffee
[coffee_gui_gif]: https://thumbs.gfycat.com/GloomyWeakHammerheadshark-small.gif
[coffee_gui_gfycat]: https://gfycat.com/gloomyweakhammerheadshark