leanshot_xlib/
drawable.rs

1use x11::xlib as x;
2
3use {GetDisplay, Image, Rectangle, X11Error};
4
5/// Anything that's drawable
6pub trait Drawable: GetDisplay {
7    /// Get drawable handle
8    fn as_drawable(&self) -> x::Drawable;
9
10    /// Capture a snapshot of this drawable, clipped by rect.
11    fn get_image(&self, rect: Rectangle) -> Result<Image, X11Error> {
12        let image = unsafe {
13            x::XGetImage(
14                self.get_display(),
15                self.as_drawable(),
16                rect.x as i32,
17                rect.y as i32,
18                rect.width,
19                rect.height,
20                0xffffffff,
21                x::ZPixmap,
22            )
23        };
24        Ok(Image { inner: image })
25    }
26}