Update examples README

This commit is contained in:
Héctor Ramón Jiménez 2019-10-13 18:51:39 +02:00
parent 734e80dea6
commit 665b1d4e1b

View File

@ -1,78 +1,54 @@
# 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)
A simple UI tour showcasing different widgets that can be built using Iced. It
also shows how the library can be integrated into an existing system.
## [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!
The native renderer of the example is built on top of [`ggez`], a game library
for Rust. Currently, it is using a [personal fork] to [add a `FontCache` type]
and [fix some issues with HiDPI].
The web version uses `iced_web` directly. This crate is still a work in
progress. In particular, the styling of elements is not finished yet
(text color, alignment, sizing, etc).
The implementation consists of different modules:
- __[`tour`]__ contains the actual cross-platform GUI code: __state__,
__messages__, __update logic__ and __view logic__.
- __[`iced_ggez`]__ implements a simple renderer for each of the used widgets
on top of the graphics module of [`ggez`].
- __[`widget`]__ conditionally re-exposes the correct platform widgets based
on the target architecture.
- __[`main`]__ integrates Iced with [`ggez`] and connects the [`tour`] with
the native [`renderer`].
- __[`lib`]__ exposes the [`tour`] types and conditionally implements the
WebAssembly entrypoint in the [`web`] module.
The conditional compilation awkwardness from targetting both native and web
platforms should be handled seamlessly by the `iced` crate in the near future!
If you want to run it as a native app:
```
cd examples/tour
cargo run
```
If you want to run it on web, you will need [`wasm-pack`]:
```
cd examples/tour
wasm-pack build --target web
```
Then, simply serve the directory with any HTTP server. For instance:
```
python3 -m http.server
```
[![Tour - Iced][gui_gif]][gui_gfycat]
[`ggez`]: https://github.com/ggez/ggez
[`tour`]: tour/src/tour.rs
[`iced_ggez`]: tour/src/iced_ggez
[`renderer`]: src/iced_ggez/renderer
[`widget`]: tour/src/widget.rs
[`main`]: tour/src/main.rs
[`lib`]: tour/src/lib.rs
[`web`]: tour/src/web.rs
[`wasm-pack`]: https://rustwasm.github.io/wasm-pack/installer/
[personal fork]: https://github.com/hecrj/ggez
[add a `FontCache` type]: https://github.com/ggez/ggez/pull/679
[fix some issues with HiDPI]: https://github.com/hecrj/ggez/commit/dfe2fd2423c51a6daf42c75f66dfaeaacd439fb1
[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
Simply use [Cargo](https://doc.rust-lang.org/cargo/reference/manifest.html#examples)
to run the example:
```
cargo run --example tour
```
#### Running the web version
```
TODO
```
## [Coffee]