Initial commit: RustDesk 1.4.7 macOS desktop port
- Filled empty libs/hbb_common/ submodule (cloned from rustdesk/hbb_common) - Patched Flutter 3.44 / Dart 3.12 compatibility: * flutter/lib/generated_bridge.dart: asTypedList with cast<>, DartPort=Int64 * flutter/lib/common.dart: DialogTheme->DialogThemeData, TabBarTheme->TabBarThemeData * flutter/pubspec.yaml: extended_text 14.0.0->15.0.2, google_fonts override 5.0.0 * flutter/macos/Runner/Configs/Release.xcconfig: EXCLUDED_ARCHS=x86_64 - Build verified: cargo check + cargo build --features flutter + cargo build --release --features flutter - Verified flutter build macos --debug and --release both produce working .app - Verified .dmg installer (27MB arm64) created via hdiutil - Build deps: Xcode 26.5, CocoaPods 1.16.2, Flutter 3.44, VCPKG arm64-osx
This commit is contained in:
@@ -0,0 +1,62 @@
|
||||
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
|
||||
Reference in New Issue
Block a user