summaryrefslogtreecommitdiffstats
path: root/renderer
diff options
context:
space:
mode:
authorLibravatar Héctor Ramón <hector0193@gmail.com>2023-06-27 20:37:19 +0200
committerLibravatar GitHub <noreply@github.com>2023-06-27 20:37:19 +0200
commitf6966268bb6d58b4b03ba61fc5732e1bf016e2a1 (patch)
treec8e79670b59fdd19103cb1a3a6d18783136e2294 /renderer
parentef18ecf4ef0fe654578380059b467fe2fb34aa0a (diff)
parent5b6e205e998cbb20b3c8aaff8b515d78315d6703 (diff)
downloadiced-f6966268bb6d58b4b03ba61fc5732e1bf016e2a1.tar.gz
iced-f6966268bb6d58b4b03ba61fc5732e1bf016e2a1.tar.bz2
iced-f6966268bb6d58b4b03ba61fc5732e1bf016e2a1.zip
Merge pull request #1845 from bungoboingo/feat/offscreen-rendering
Feat: Offscreen Rendering & Screenshots
Diffstat (limited to 'renderer')
-rw-r--r--renderer/src/compositor.rs30
1 files changed, 30 insertions, 0 deletions
diff --git a/renderer/src/compositor.rs b/renderer/src/compositor.rs
index a353b8e4..57317b28 100644
--- a/renderer/src/compositor.rs
+++ b/renderer/src/compositor.rs
@@ -136,6 +136,36 @@ impl<Theme> crate::graphics::Compositor for Compositor<Theme> {
}
})
}
+
+ fn screenshot<T: AsRef<str>>(
+ &mut self,
+ renderer: &mut Self::Renderer,
+ surface: &mut Self::Surface,
+ viewport: &Viewport,
+ background_color: Color,
+ overlay: &[T],
+ ) -> Vec<u8> {
+ renderer.with_primitives(|backend, primitives| match (self, backend, surface) {
+ (Self::TinySkia(_compositor), crate::Backend::TinySkia(backend), Surface::TinySkia(surface)) => {
+ iced_tiny_skia::window::compositor::screenshot(surface, backend, primitives, viewport, background_color, overlay)
+ },
+ #[cfg(feature = "wgpu")]
+ (Self::Wgpu(compositor), crate::Backend::Wgpu(backend), Surface::Wgpu(_)) => {
+ iced_wgpu::window::compositor::screenshot(
+ compositor,
+ backend,
+ primitives,
+ viewport,
+ background_color,
+ overlay,
+ )
+ },
+ #[allow(unreachable_patterns)]
+ _ => panic!(
+ "The provided renderer or backend are not compatible with the compositor."
+ ),
+ })
+ }
}
enum Candidate {