Make iced_tiny_skia optional with a tiny-skia feature
This commit is contained in:
parent
bbafeed13d
commit
1f13a91361
20 changed files with 157 additions and 91 deletions
|
|
@ -12,18 +12,20 @@ keywords.workspace = true
|
|||
|
||||
[features]
|
||||
wgpu = ["iced_wgpu"]
|
||||
image = ["iced_tiny_skia/image", "iced_wgpu?/image"]
|
||||
svg = ["iced_tiny_skia/svg", "iced_wgpu?/svg"]
|
||||
geometry = ["iced_graphics/geometry", "iced_tiny_skia/geometry", "iced_wgpu?/geometry"]
|
||||
tiny-skia = ["iced_tiny_skia"]
|
||||
image = ["iced_tiny_skia?/image", "iced_wgpu?/image"]
|
||||
svg = ["iced_tiny_skia?/svg", "iced_wgpu?/svg"]
|
||||
geometry = ["iced_graphics/geometry", "iced_tiny_skia?/geometry", "iced_wgpu?/geometry"]
|
||||
tracing = ["iced_wgpu?/tracing"]
|
||||
web-colors = ["iced_wgpu?/web-colors"]
|
||||
webgl = ["iced_wgpu?/webgl"]
|
||||
fira-sans = ["iced_graphics/fira-sans"]
|
||||
custom = []
|
||||
|
||||
[dependencies]
|
||||
iced_graphics.workspace = true
|
||||
|
||||
iced_tiny_skia.workspace = true
|
||||
iced_tiny_skia.optional = true
|
||||
|
||||
iced_wgpu.workspace = true
|
||||
iced_wgpu.optional = true
|
||||
|
|
|
|||
|
|
@ -8,11 +8,7 @@ use crate::graphics;
|
|||
use crate::graphics::compositor;
|
||||
use crate::graphics::mesh;
|
||||
|
||||
pub enum Renderer<L, R>
|
||||
where
|
||||
L: core::Renderer,
|
||||
R: core::Renderer,
|
||||
{
|
||||
pub enum Renderer<L, R> {
|
||||
Left(L),
|
||||
Right(R),
|
||||
}
|
||||
|
|
@ -26,29 +22,6 @@ macro_rules! delegate {
|
|||
};
|
||||
}
|
||||
|
||||
impl<L, R> Renderer<L, R>
|
||||
where
|
||||
L: core::Renderer,
|
||||
R: core::Renderer,
|
||||
{
|
||||
#[cfg(feature = "geometry")]
|
||||
pub fn draw_geometry<Geometry>(
|
||||
&mut self,
|
||||
layers: impl IntoIterator<Item = Geometry>,
|
||||
) where
|
||||
L: graphics::geometry::Renderer,
|
||||
R: graphics::geometry::Renderer,
|
||||
|
||||
Geometry: Into<geometry::Geometry<L::Geometry, R::Geometry>>,
|
||||
{
|
||||
use graphics::geometry::Renderer;
|
||||
|
||||
for layer in layers {
|
||||
<Self as Renderer>::draw_geometry(self, layer.into());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl<L, R> core::Renderer for Renderer<L, R>
|
||||
where
|
||||
L: core::Renderer,
|
||||
|
|
|
|||
|
|
@ -19,27 +19,40 @@ pub use settings::Settings;
|
|||
/// The default graphics renderer for [`iced`].
|
||||
///
|
||||
/// [`iced`]: https://github.com/iced-rs/iced
|
||||
#[cfg(not(feature = "wgpu"))]
|
||||
pub type Renderer = iced_tiny_skia::Renderer;
|
||||
|
||||
/// The default graphics renderer for [`iced`].
|
||||
///
|
||||
/// [`iced`]: https://github.com/iced-rs/iced
|
||||
#[cfg(feature = "wgpu")]
|
||||
pub type Renderer =
|
||||
fallback::Renderer<iced_wgpu::Renderer, iced_tiny_skia::Renderer>;
|
||||
pub type Renderer = renderer::Renderer;
|
||||
|
||||
/// The default graphics compositor for [`iced`].
|
||||
///
|
||||
/// [`iced`]: https://github.com/iced-rs/iced
|
||||
#[cfg(not(feature = "wgpu"))]
|
||||
pub type Compositor = iced_tiny_skia::window::Compositor;
|
||||
pub type Compositor = renderer::Compositor;
|
||||
|
||||
/// The default graphics renderer for [`iced`].
|
||||
///
|
||||
/// [`iced`]: https://github.com/iced-rs/iced
|
||||
#[cfg(feature = "wgpu")]
|
||||
pub type Compositor = fallback::Compositor<
|
||||
iced_wgpu::window::Compositor,
|
||||
iced_tiny_skia::window::Compositor,
|
||||
>;
|
||||
#[cfg(all(feature = "wgpu", feature = "tiny-skia"))]
|
||||
mod renderer {
|
||||
pub type Renderer = crate::fallback::Renderer<
|
||||
iced_wgpu::Renderer,
|
||||
iced_tiny_skia::Renderer,
|
||||
>;
|
||||
|
||||
pub type Compositor = crate::fallback::Compositor<
|
||||
iced_wgpu::window::Compositor,
|
||||
iced_tiny_skia::window::Compositor,
|
||||
>;
|
||||
}
|
||||
|
||||
#[cfg(all(feature = "wgpu", not(feature = "tiny-skia")))]
|
||||
mod renderer {
|
||||
pub type Renderer = iced_wgpu::Renderer;
|
||||
pub type Compositor = iced_wgpu::window::Compositor;
|
||||
}
|
||||
|
||||
#[cfg(all(not(feature = "wgpu"), feature = "tiny-skia"))]
|
||||
mod renderer {
|
||||
pub type Renderer = iced_tiny_skia::Renderer;
|
||||
pub type Compositor = iced_tiny_skia::window::Compositor;
|
||||
}
|
||||
|
||||
#[cfg(not(any(feature = "wgpu", feature = "tiny-skia")))]
|
||||
mod renderer {
|
||||
pub type Renderer = ();
|
||||
pub type Compositor = ();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,6 +28,7 @@ impl Default for Settings {
|
|||
}
|
||||
}
|
||||
|
||||
#[cfg(feature = "tiny-skia")]
|
||||
impl From<Settings> for iced_tiny_skia::Settings {
|
||||
fn from(settings: Settings) -> Self {
|
||||
Self {
|
||||
|
|
@ -48,3 +49,7 @@ impl From<Settings> for iced_wgpu::Settings {
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
impl From<Settings> for () {
|
||||
fn from(_settings: Settings) -> Self {}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue