63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			63 lines
		
	
	
		
			1.4 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
Derived from https://github.com/quadrupleslap/scrap
 | 
						|
 | 
						|
# scrap
 | 
						|
 | 
						|
Scrap records your screen! At least it does if you're on Windows, macOS, or Linux.
 | 
						|
 | 
						|
## Usage
 | 
						|
 | 
						|
```toml
 | 
						|
[dependencies]
 | 
						|
scrap = "0.5"
 | 
						|
```
 | 
						|
 | 
						|
Its API is as simple as it gets!
 | 
						|
 | 
						|
```rust
 | 
						|
struct Display; /// A screen.
 | 
						|
struct Frame; /// An array of the pixels that were on-screen.
 | 
						|
struct Capturer; /// A recording instance.
 | 
						|
 | 
						|
impl Capturer {
 | 
						|
    /// Begin recording.
 | 
						|
    pub fn new(display: Display) -> io::Result<Capturer>;
 | 
						|
 | 
						|
    /// Try to get a frame.
 | 
						|
    /// Returns WouldBlock if it's not ready yet.
 | 
						|
    pub fn frame<'a>(&'a mut self) -> io::Result<Frame<'a>>;
 | 
						|
 | 
						|
    pub fn width(&self) -> usize;
 | 
						|
    pub fn height(&self) -> usize;
 | 
						|
}
 | 
						|
 | 
						|
impl Display {
 | 
						|
    /// The primary screen.
 | 
						|
    pub fn primary() -> io::Result<Display>;
 | 
						|
 | 
						|
    /// All the screens.
 | 
						|
    pub fn all() -> io::Result<Vec<Display>>;
 | 
						|
 | 
						|
    pub fn width(&self) -> usize;
 | 
						|
    pub fn height(&self) -> usize;
 | 
						|
}
 | 
						|
 | 
						|
impl<'a> ops::Deref for Frame<'a> {
 | 
						|
    /// A frame is just an array of bytes.
 | 
						|
    type Target = [u8];
 | 
						|
}
 | 
						|
```
 | 
						|
 | 
						|
## The Frame Format
 | 
						|
 | 
						|
- The frame format is guaranteed to be **packed BGRA**.
 | 
						|
- The width and height are guaranteed to remain constant.
 | 
						|
- The stride might be greater than the width, and it may also vary between frames.
 | 
						|
 | 
						|
## System Requirements
 | 
						|
 | 
						|
OS      | Minimum Requirements
 | 
						|
--------|---------------------
 | 
						|
macOS   | macOS 10.8
 | 
						|
Linux   | XCB + SHM + RandR
 | 
						|
Windows | DirectX 11.1
 |