iced_renderer/
lib.rs

1//! The official renderer for iced.
2#![cfg_attr(docsrs, feature(doc_cfg))]
3
4#[cfg(feature = "wgpu")]
5pub use iced_wgpu as wgpu;
6
7pub mod fallback;
8
9pub use iced_graphics as graphics;
10pub use iced_graphics::core;
11
12#[cfg(feature = "geometry")]
13pub use iced_graphics::geometry;
14
15/// The default graphics renderer for [`iced`].
16///
17/// [`iced`]: https://github.com/iced-rs/iced
18pub type Renderer = renderer::Renderer;
19
20/// The default graphics compositor for [`iced`].
21///
22/// [`iced`]: https://github.com/iced-rs/iced
23pub type Compositor = renderer::Compositor;
24
25#[cfg(all(feature = "wgpu", feature = "tiny-skia"))]
26mod renderer {
27    pub type Renderer = crate::fallback::Renderer<
28        iced_wgpu::Renderer,
29        iced_tiny_skia::Renderer,
30    >;
31
32    pub type Compositor = crate::fallback::Compositor<
33        iced_wgpu::window::Compositor,
34        iced_tiny_skia::window::Compositor,
35    >;
36}
37
38#[cfg(all(feature = "wgpu", not(feature = "tiny-skia")))]
39mod renderer {
40    pub type Renderer = iced_wgpu::Renderer;
41    pub type Compositor = iced_wgpu::window::Compositor;
42}
43
44#[cfg(all(not(feature = "wgpu"), feature = "tiny-skia"))]
45mod renderer {
46    pub type Renderer = iced_tiny_skia::Renderer;
47    pub type Compositor = iced_tiny_skia::window::Compositor;
48}
49
50#[cfg(not(any(feature = "wgpu", feature = "tiny-skia")))]
51mod renderer {
52    #[cfg(not(debug_assertions))]
53    compile_error!(
54        "Cannot compile `iced_renderer` in release mode \
55        without a renderer feature enabled. \
56        Enable either the `wgpu` or `tiny-skia` feature, or both."
57    );
58
59    pub type Renderer = ();
60    pub type Compositor = ();
61}