selection_capture/
traits.rs1use crate::profile::{AppProfile, AppProfileUpdate};
2use crate::types::{
3 ActiveApp, CGRect, CaptureFailureContext, CaptureMethod, CleanupStatus, PlatformAttemptResult,
4 UserHint,
5};
6
7pub trait CancelSignal {
8 fn is_cancelled(&self) -> bool;
9}
10
11pub trait AppProfileStore {
12 fn load(&self, app: &ActiveApp) -> AppProfile;
13 fn merge_update(&self, app: &ActiveApp, update: AppProfileUpdate);
14}
15
16pub trait AppAdapter: Send + Sync {
17 fn matches(&self, app: &ActiveApp) -> bool;
18 fn strategy_override(&self, app: &ActiveApp) -> Option<Vec<CaptureMethod>>;
19 fn hint_override(&self, context: &CaptureFailureContext) -> Option<UserHint>;
20}
21
22pub trait CapturePlatform {
23 fn active_app(&self) -> Option<ActiveApp>;
24 fn focused_window_frame(&self) -> Option<CGRect> {
25 None
26 }
27 fn attempt(&self, method: CaptureMethod, app: Option<&ActiveApp>) -> PlatformAttemptResult;
28 fn cleanup(&self) -> CleanupStatus;
29}
30
31pub trait MonitorPlatform {
32 fn next_selection_change(&self) -> Option<String>;
33}