Make iced_tiny_skia optional with a tiny-skia feature

This commit is contained in:
Héctor Ramón Jiménez 2024-03-22 05:27:31 +01:00
parent bbafeed13d
commit 1f13a91361
No known key found for this signature in database
GPG key ID: 7CC46565708259A7
20 changed files with 157 additions and 91 deletions

View file

@ -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

View file

@ -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,

View file

@ -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 = ();
}

View file

@ -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 {}
}