summaryrefslogtreecommitdiffstats
path: root/runtime/src/window
diff options
context:
space:
mode:
authorLibravatar Bingus <shankern@protonmail.com>2023-03-25 10:45:39 -0700
committerLibravatar Héctor Ramón Jiménez <hector0193@gmail.com>2023-06-06 15:37:30 +0200
commit233196eb14b40f8bd5201ea0262571f82136ad53 (patch)
tree410cf71cda98bdcb55ecc384f7fbc2f4ef669edd /runtime/src/window
parentc15f1b5f6575792cc89bb5fba2e613428397e46a (diff)
downloadiced-233196eb14b40f8bd5201ea0262571f82136ad53.tar.gz
iced-233196eb14b40f8bd5201ea0262571f82136ad53.tar.bz2
iced-233196eb14b40f8bd5201ea0262571f82136ad53.zip
Added offscreen rendering support for wgpu & tiny-skia exposed with the window::screenshot command.
Diffstat (limited to 'runtime/src/window')
-rw-r--r--runtime/src/window/action.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/runtime/src/window/action.rs b/runtime/src/window/action.rs
index a9d2a3d0..cb430681 100644
--- a/runtime/src/window/action.rs
+++ b/runtime/src/window/action.rs
@@ -1,6 +1,7 @@
use crate::core::window::{Icon, Level, Mode, UserAttention};
use crate::futures::MaybeSend;
+use crate::screenshot::Screenshot;
use std::fmt;
/// An operation to be performed on some window.
@@ -89,6 +90,8 @@ pub enum Action<T> {
/// - **X11:** Has no universal guidelines for icon sizes, so you're at the whims of the WM. That
/// said, it's usually in the same ballpark as on Windows.
ChangeIcon(Icon),
+ /// Screenshot the viewport of the window.
+ Screenshot(Box<dyn FnOnce(Screenshot) -> T + 'static>),
}
impl<T> Action<T> {
@@ -118,6 +121,11 @@ impl<T> Action<T> {
Self::ChangeLevel(level) => Action::ChangeLevel(level),
Self::FetchId(o) => Action::FetchId(Box::new(move |s| f(o(s)))),
Self::ChangeIcon(icon) => Action::ChangeIcon(icon),
+ Self::Screenshot(tag) => {
+ Action::Screenshot(Box::new(move |screenshot| {
+ f(tag(screenshot))
+ }))
+ }
}
}
}
@@ -155,6 +163,7 @@ impl<T> fmt::Debug for Action<T> {
Self::ChangeIcon(_icon) => {
write!(f, "Action::ChangeIcon(icon)")
}
+ Self::Screenshot(_) => write!(f, "Action::Screenshot"),
}
}
}