use quicklook::SourceFrameRect;
use serde::{Deserialize, Serialize};
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub(crate) struct SetPreviewPaneItemsRequest {
pub items: Vec<PreviewItem>,
}
#[derive(Debug, Deserialize, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct PreviewItem {
pub url: String,
pub src_frame: Option<SourceFrame>,
}
#[derive(Debug, Serialize, Deserialize)]
pub enum SourceFrame {
Screen(SourceFrameRect),
Window {
#[serde(rename = "windowLabel")]
window_label: String,
rect: SourceFrameRect,
},
}
impl SourceFrame {
pub fn screen(x: f64, y: f64, width: f64, height: f64) -> Self {
Self::Screen(SourceFrameRect {
x,
y,
width,
height,
})
}
pub fn window(window: &tauri::Window, x: f64, y: f64, width: f64, height: f64) -> Self {
Self::Window {
window_label: window.label().into(),
rect: SourceFrameRect {
x,
y,
width,
height,
},
}
}
}
impl PreviewItem {
pub fn new(url: impl Into<String>, src_frame: Option<SourceFrame>) -> Self {
Self {
url: url.into(),
src_frame,
}
}
}