Skip to main content

selection_capture/
lib.rs

1#[cfg(feature = "async")]
2mod async_api;
3#[cfg(target_os = "macos")]
4mod ax_observer;
5mod cache;
6mod engine;
7#[cfg(feature = "linux-alpha")]
8mod linux;
9#[cfg(feature = "linux-alpha")]
10mod linux_observer;
11#[cfg(feature = "linux-alpha")]
12mod linux_runtime_adapter;
13#[cfg(feature = "linux-alpha")]
14mod linux_shell;
15#[cfg(feature = "linux-alpha")]
16mod linux_subscriber;
17#[cfg(target_os = "macos")]
18mod macos;
19#[cfg(target_os = "macos")]
20mod macos_ax;
21mod monitor;
22mod native_subscriber;
23mod observer_bridge;
24pub mod platform;
25mod profile;
26#[cfg(feature = "rich-content")]
27mod rich_clipboard;
28#[cfg(feature = "rich-content")]
29mod rich_convert;
30#[cfg(feature = "rich-content")]
31mod rich_engine;
32#[cfg(feature = "rich-content")]
33mod rich_types;
34mod traits;
35mod types;
36#[cfg(feature = "windows-beta")]
37mod windows;
38#[cfg(feature = "windows-beta")]
39mod windows_observer;
40#[cfg(feature = "windows-beta")]
41mod windows_runtime_adapter;
42#[cfg(feature = "windows-beta")]
43mod windows_subscriber;
44
45#[cfg(feature = "async")]
46pub use async_api::capture_async;
47#[cfg(target_os = "macos")]
48pub use ax_observer::{
49    drain_events_for_monitor as ax_observer_drain_events_for_monitor, AxObserverBridge,
50};
51pub use engine::{capture, try_capture};
52#[cfg(feature = "linux-alpha")]
53pub use linux::{
54    LinuxMonitorBackend, LinuxNativeEventPump, LinuxPlatform, LinuxSelectionMonitor,
55    LinuxSelectionMonitorOptions,
56};
57#[cfg(feature = "linux-alpha")]
58pub use linux_observer::{
59    drain_events_for_monitor as linux_observer_drain_events_for_monitor, LinuxObserverBridge,
60    LinuxObserverLifecycleHook,
61};
62#[cfg(feature = "linux-alpha")]
63pub use linux_runtime_adapter::{
64    install_default_linux_runtime_adapter_if_absent, linux_default_runtime_adapter_state,
65    linux_default_runtime_event_source_registered, set_linux_default_runtime_event_source,
66    LinuxDefaultRuntimeAdapterState, LinuxDefaultRuntimeEventSource,
67};
68#[cfg(feature = "linux-alpha")]
69pub use linux_subscriber::{
70    ensure_linux_native_subscriber_hook_installed, linux_native_subscriber_stats,
71    set_linux_native_runtime_adapter, LinuxNativeRuntimeAdapter, LinuxNativeSubscriberStats,
72};
73#[cfg(target_os = "macos")]
74pub use macos::{
75    MacOSMonitorBackend, MacOSNativeEventPump, MacOSNativeEventSource, MacOSNativeObserverStats,
76    MacOSPlatform, MacOSSelectionMonitor, MacOSSelectionMonitorOptions,
77};
78pub use monitor::{
79    CaptureMetrics, CaptureMonitor, MethodMetrics, MonitorGuardStats, MonitorSpamGuard,
80};
81pub use platform::PlatformCapabilities;
82pub use profile::{AppProfile, AppProfileUpdate, TriState};
83#[cfg(feature = "rich-content")]
84pub use rich_engine::{capture_rich, try_capture_rich};
85#[cfg(feature = "rich-content")]
86pub use rich_types::{
87    CaptureRichOptions, CaptureRichOutcome, CaptureRichSuccess, CapturedContent, ContentMetadata,
88    RichConversion, RichFormat, RichPayload, RichSource,
89};
90pub use traits::{AppAdapter, AppProfileStore, CancelSignal, CapturePlatform, MonitorPlatform};
91pub use types::{
92    ActiveApp, CGPoint, CGRect, CGSize, CaptureFailure, CaptureFailureContext, CaptureMethod,
93    CaptureOptions, CaptureOutcome, CaptureStatus, CaptureSuccess, CaptureTrace, CleanupStatus,
94    FailureKind, PlatformAttemptResult, RetryPolicy, TraceEvent, UserHint, WouldBlock,
95};
96#[cfg(feature = "windows-beta")]
97pub use windows::{
98    WindowsMonitorBackend, WindowsNativeEventPump, WindowsPlatform, WindowsSelectionMonitor,
99    WindowsSelectionMonitorOptions,
100};
101#[cfg(feature = "windows-beta")]
102pub use windows_observer::{
103    drain_events_for_monitor as windows_observer_drain_events_for_monitor, WindowsObserverBridge,
104    WindowsObserverLifecycleHook,
105};
106#[cfg(feature = "windows-beta")]
107pub use windows_runtime_adapter::{
108    install_default_windows_runtime_adapter_if_absent, set_windows_default_runtime_event_source,
109    windows_default_runtime_adapter_state, windows_default_runtime_event_source_registered,
110    WindowsDefaultRuntimeAdapterState, WindowsDefaultRuntimeEventSource,
111};
112#[cfg(feature = "windows-beta")]
113pub use windows_subscriber::{
114    ensure_windows_native_subscriber_hook_installed, set_windows_native_runtime_adapter,
115    windows_native_subscriber_stats, WindowsNativeRuntimeAdapter, WindowsNativeSubscriberStats,
116};
117
118/// Reads the currently focused window frame from the platform without running text capture.
119pub fn capture_window_frame(platform: &impl CapturePlatform) -> Option<CGRect> {
120    platform.focused_window_frame()
121}