diff options
| author | 2023-06-27 20:37:19 +0200 | |
|---|---|---|
| committer | 2023-06-27 20:37:19 +0200 | |
| commit | f6966268bb6d58b4b03ba61fc5732e1bf016e2a1 (patch) | |
| tree | c8e79670b59fdd19103cb1a3a6d18783136e2294 /renderer | |
| parent | ef18ecf4ef0fe654578380059b467fe2fb34aa0a (diff) | |
| parent | 5b6e205e998cbb20b3c8aaff8b515d78315d6703 (diff) | |
| download | iced-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 '')
| -rw-r--r-- | renderer/src/compositor.rs | 30 | 
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 { | 
