1use eframe::{egui, run_native};
2use image::buffer::ConvertBuffer;
3use image::DynamicImage;
4use xcap::Monitor;
5
6mod app;
7mod tests;
8
9use app::App;
10
11pub fn get_screen_snip(save_path: String) {
26 let viewport_builder = egui::ViewportBuilder::default()
27 .with_title("Screenshot Viewport")
28 .with_resizable(false)
29 .with_always_on_top()
30 .with_maximized(true)
31 .with_decorations(false)
32 .with_transparent(true);
33 let options = eframe::NativeOptions {
34 viewport: viewport_builder,
35 ..Default::default()
36 };
37
38 let monitors = Monitor::all().unwrap();
39 let monitor = &monitors[0];
40 dbg!(monitor.x(), monitor.y());
41 let rgba_image = monitor.capture_image().unwrap();
42 let rgb_image = rgba_image.convert();
43 println!("Image size: {:?}", rgb_image.dimensions());
44 let factor = monitor.scale_factor();
45 println!("Scale factor: {:?}", factor);
46 let image = DynamicImage::ImageRgba8(rgb_image);
47
48 run_native(
49 "App",
50 options,
51 Box::new(|cc| Ok(Box::new(App::new(cc, image, factor, save_path)))),
52 )
53 .unwrap();
54}