diff --git a/Cargo.toml b/Cargo.toml index b27a68c1..f37e23ea 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,7 +1,7 @@ [package] name = "crabgrab" description = "A cross-platform screen/window capture crate" -version = "0.3.9" +version = "0.4.0" edition = "2021" authors = ["Augmend, Inc. ", "Liam Taylor ", "Tim Misiak "] documentation = "https://docs.rs/crabgrab" @@ -33,7 +33,7 @@ diagnostic = [] [dependencies] futures = "0.3" parking_lot = "0.12" -half = { version = "2.4", optional = true } +half = { version = "2.4", features = ["bytemuck"], optional = true } bytemuck = { version = "1.15", optional = true } [target.'cfg(target_os = "macos")'.dependencies] diff --git a/docs/macos_docs/crabgrab/all.html b/docs/macos_docs/crabgrab/all.html index 2ea95fba..ee23cd1b 100644 --- a/docs/macos_docs/crabgrab/all.html +++ b/docs/macos_docs/crabgrab/all.html @@ -1,2 +1 @@ -List of all items in this crate -

List of all items

Structs

Enums

Traits

Functions

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Traits

Functions

Type Aliases

\ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/enum.CapturableContentError.html b/docs/macos_docs/crabgrab/capturable_content/enum.CapturableContentError.html index 228c5961..2736f508 100644 --- a/docs/macos_docs/crabgrab/capturable_content/enum.CapturableContentError.html +++ b/docs/macos_docs/crabgrab/capturable_content/enum.CapturableContentError.html @@ -1,21 +1,20 @@ -CapturableContentError in crabgrab::capturable_content - Rust -
pub enum CapturableContentError {
-    Other(String),
+CapturableContentError in crabgrab::capturable_content - Rust
pub enum CapturableContentError {
+    Other(String),
 }
Expand description

Represents an error that occurred when enumerating capturable content

-

Variants§

§

Other(String)

Trait Implementations§

source§

impl Clone for CapturableContentError

source§

fn clone(&self) -> CapturableContentError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CapturableContentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CapturableContentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CapturableContentError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Variants§

§

Other(String)

Trait Implementations§

source§

impl Clone for CapturableContentError

source§

fn clone(&self) -> CapturableContentError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CapturableContentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CapturableContentError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CapturableContentError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where - T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/index.html b/docs/macos_docs/crabgrab/capturable_content/index.html index 075e4cd4..e534a6a9 100644 --- a/docs/macos_docs/crabgrab/capturable_content/index.html +++ b/docs/macos_docs/crabgrab/capturable_content/index.html @@ -1,3 +1,2 @@ -crabgrab::capturable_content - Rust -
Expand description

Enumeration of capturable items

+crabgrab::capturable_content - Rust

Module crabgrab::capturable_content

source ·
Expand description

Enumeration of capturable items

Structs§

Enums§

\ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableApplication.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableApplication.html index 3ce7ce4b..5fae7031 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableApplication.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableApplication.html @@ -1,18 +1,17 @@ -CapturableApplication in crabgrab::capturable_content - Rust -
pub struct CapturableApplication { /* private fields */ }
Expand description

Represents an application with capturable windows

-

Implementations§

source§

impl CapturableApplication

source

pub fn identifier(&self) -> String

Gets the “identifier” of the application

+CapturableApplication in crabgrab::capturable_content - Rust
pub struct CapturableApplication { /* private fields */ }
Expand description

Represents an application with capturable windows

+

Implementations§

source§

impl CapturableApplication

source

pub fn identifier(&self) -> String

Gets the “identifier” of the application

On MacOS, this is the application bundle, and on windows, this is the application file name

-
source

pub fn name(&self) -> String

Gets the friendly name of the application

-
source

pub fn pid(&self) -> i32

Gets the process id of the application

-

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+
source

pub fn name(&self) -> String

Gets the friendly name of the application

+
source

pub fn pid(&self) -> i32

Gets the process id of the application

+

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

\ No newline at end of file +From<T> for U chooses to do.

+
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

\ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContent.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContent.html index 8cfed5ae..420ba654 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContent.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContent.html @@ -1,24 +1,23 @@ -CapturableContent in crabgrab::capturable_content - Rust -
pub struct CapturableContent { /* private fields */ }
Expand description

A collection of capturable content (windows, screens)

+CapturableContent in crabgrab::capturable_content - Rust

Struct crabgrab::capturable_content::CapturableContent

source ·
pub struct CapturableContent { /* private fields */ }
Expand description

A collection of capturable content (windows, screens)

Implementations§

source§

impl CapturableContent

source

pub async fn new( filter: CapturableContentFilter -) -> Result<Self, CapturableContentError>

Requests capturable content from the OS

+) -> Result<Self, CapturableContentError>

Requests capturable content from the OS

Note that the returned capturable content may be stale - for example, a window enumerated in this capturable content may have been closed before it is used to open a stream, and creating a stream for that window will result in an error.

source

pub fn windows<'a>(&'a self) -> CapturableWindowIterator<'a>

Get an iterator over the capturable windows

source

pub fn displays<'a>(&'a self) -> CapturableDisplayIterator<'a>

Get an iterator over the capturable displays

-

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html index fb92a09d..fad80557 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html @@ -1,29 +1,28 @@ -CapturableContentFilter in crabgrab::capturable_content - Rust -
pub struct CapturableContentFilter { /* private fields */ }
Expand description

Selects the kind of capturable content to enumerate

-

Implementations§

source§

impl CapturableContentFilter

source

pub fn new(displays: bool, windows: Option<CapturableWindowFilter>) -> Self

Create a new content filter with the given filtering options

-
source

pub fn is_empty(&self) -> bool

Whether this filter allows any capturable content

+CapturableContentFilter in crabgrab::capturable_content - Rust
pub struct CapturableContentFilter { /* private fields */ }
Expand description

Selects the kind of capturable content to enumerate

+

Implementations§

source§

impl CapturableContentFilter

source

pub fn new(displays: bool, windows: Option<CapturableWindowFilter>) -> Self

Create a new content filter with the given filtering options

+
source

pub fn is_empty(&self) -> bool

Whether this filter allows any capturable content

source

pub const DISPLAYS: Self = _

All capturable displays, but no windows

source

pub const ALL_WINDOWS: Self = _

All capturable windows, but no displays

source

pub const EVERYTHING: Self = _

Everything that can be captured

source

pub const NORMAL_WINDOWS: Self = _

Only normal windows - no modal panels, not the dock on macos, etc.

source

pub const EVERYTHING_NORMAL: Self = _

Only normal windows and displays

-

Trait Implementations§

source§

impl Clone for CapturableContentFilter

source§

fn clone(&self) -> CapturableContentFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl MacosCapturableContentFilterExt for CapturableContentFilter

Trait Implementations§

source§

impl Clone for CapturableContentFilter

source§

fn clone(&self) -> CapturableContentFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl MacosCapturableContentFilterExt for CapturableContentFilter

source§

fn with_window_level_range( self, - min: Option<MacosWindowLevel>, - max: Option<MacosWindowLevel> -) -> Result<Self, CapturableContentError>

Set the range of “window levels” to filter to (inclusive)
source§

fn with_exclude_bundle_ids(self, excluded_bundle_ids: &[&str]) -> Self

Exclude windows who’s applications have the provided bundle ids
source§

fn with_exclude_window_ids(self, excluded_window_ids: &[u32]) -> Self

Exclude windows with the given CGWindowIDs

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ min: Option<MacosWindowLevel>, + max: Option<MacosWindowLevel> +) -> Result<Self, CapturableContentError>
Set the range of “window levels” to filter to (inclusive)
source§

fn with_exclude_bundle_ids(self, excluded_bundle_ids: &[&str]) -> Self

Exclude windows who’s applications have the provided bundle ids
source§

fn with_exclude_window_ids(self, excluded_window_ids: &[u32]) -> Self

Exclude windows with the given CGWindowIDs

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplay.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplay.html index b0ea4aa8..9c54ece9 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplay.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplay.html @@ -1,20 +1,19 @@ -CapturableDisplay in crabgrab::capturable_content - Rust -
pub struct CapturableDisplay { /* private fields */ }
Expand description

Represents a capturable display

+CapturableDisplay in crabgrab::capturable_content - Rust

Struct crabgrab::capturable_content::CapturableDisplay

source ·
pub struct CapturableDisplay { /* private fields */ }
Expand description

Represents a capturable display

Implementations§

source§

impl CapturableDisplay

source

pub fn rect(&self) -> Rect

Gets the virtual screen rectangle of this display

Note: Currently on windows, this is only evaluated at the time of display enumeration

-

Trait Implementations§

source§

impl Clone for CapturableDisplay

source§

fn clone(&self) -> CapturableDisplay

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CapturableDisplay

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Send for CapturableDisplay

source§

impl Sync for CapturableDisplay

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for CapturableDisplay

source§

fn clone(&self) -> CapturableDisplay

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CapturableDisplay

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Send for CapturableDisplay

source§

impl Sync for CapturableDisplay

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html index b0b37eee..f01ca192 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html @@ -1,195 +1,194 @@ -CapturableDisplayIterator in crabgrab::capturable_content - Rust -
pub struct CapturableDisplayIterator<'content> { /* private fields */ }
Expand description

An iterator over capturable displays

-

Trait Implementations§

source§

impl ExactSizeIterator for CapturableDisplayIterator<'_>

source§

fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
source§

fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (exact_size_is_empty)
Returns true if the iterator is empty. Read more
source§

impl Iterator for CapturableDisplayIterator<'_>

§

type Item = CapturableDisplay

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
source§

fn next_chunk<const N: usize>( +CapturableDisplayIterator in crabgrab::capturable_content - Rust
pub struct CapturableDisplayIterator<'content> { /* private fields */ }
Expand description

An iterator over capturable displays

+

Trait Implementations§

source§

impl ExactSizeIterator for CapturableDisplayIterator<'_>

source§

fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
source§

fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (exact_size_is_empty)
Returns true if the iterator is empty. Read more
source§

impl Iterator for CapturableDisplayIterator<'_>

§

type Item = CapturableDisplay

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
source§

fn next_chunk<const N: usize>( &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<F, R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<F, R>( +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<'content> !RefUnwindSafe for CapturableDisplayIterator<'content>

§

impl<'content> Send for CapturableDisplayIterator<'content>

§

impl<'content> Sync for CapturableDisplayIterator<'content>

§

impl<'content> Unpin for CapturableDisplayIterator<'content>

§

impl<'content> !UnwindSafe for CapturableDisplayIterator<'content>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<'content> Freeze for CapturableDisplayIterator<'content>

§

impl<'content> !RefUnwindSafe for CapturableDisplayIterator<'content>

§

impl<'content> Send for CapturableDisplayIterator<'content>

§

impl<'content> Sync for CapturableDisplayIterator<'content>

§

impl<'content> Unpin for CapturableDisplayIterator<'content>

§

impl<'content> !UnwindSafe for CapturableDisplayIterator<'content>

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindow.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindow.html index f8c29f0e..ea636cd9 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindow.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindow.html @@ -1,33 +1,32 @@ -CapturableWindow in crabgrab::capturable_content - Rust -
pub struct CapturableWindow { /* private fields */ }
Expand description

Represents a capturable application window

-

Implementations§

source§

impl CapturableWindow

source

pub fn title(&self) -> String

Gets the title of the window

+CapturableWindow in crabgrab::capturable_content - Rust

Struct crabgrab::capturable_content::CapturableWindow

source ·
pub struct CapturableWindow { /* private fields */ }
Expand description

Represents a capturable application window

+

Implementations§

source§

impl CapturableWindow

source

pub fn title(&self) -> String

Gets the title of the window

source

pub fn rect(&self) -> Rect

Gets the virtual screen rectangle of the window

source

pub fn application(&self) -> CapturableApplication

Gets the application that owns this window

-
source

pub fn is_visible(&self) -> bool

Checks whether an application is visible (on-screen, not minimized)

-

Trait Implementations§

source§

impl Clone for CapturableWindow

source§

fn clone(&self) -> CapturableWindow

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CapturableWindow

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for CapturableWindow

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where - H: Hasher, - Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl MacosCapturableWindowExt for CapturableWindow

source§

fn get_window_layer(&self) -> Result<i32, CapturableContentError>

Get the window layer of this window
source§

fn get_window_level(&self) -> Result<MacosWindowLevel, CapturableContentError>

Get the window level of this window
source§

fn get_window_id(&self) -> u32

Get the native window id for this capturable window. +
source

pub fn is_visible(&self) -> bool

Checks whether an application is visible (on-screen, not minimized)

+

Trait Implementations§

source§

impl Clone for CapturableWindow

source§

fn clone(&self) -> CapturableWindow

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CapturableWindow

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Hash for CapturableWindow

source§

fn hash<__H: Hasher>(&self, state: &mut __H)

Feeds this value into the given Hasher. Read more
1.3.0 · source§

fn hash_slice<H>(data: &[Self], state: &mut H)
where + H: Hasher, + Self: Sized,

Feeds a slice of this type into the given Hasher. Read more
source§

impl MacosCapturableWindowExt for CapturableWindow

source§

fn get_window_layer(&self) -> Result<i32, CapturableContentError>

Get the window layer of this window
source§

fn get_window_level(&self) -> Result<MacosWindowLevel, CapturableContentError>

Get the window level of this window
source§

fn get_window_id(&self) -> u32

Get the native window id for this capturable window. This is the CGWindowID for this window.
source§

fn from_window_id( - window_id: u32 -) -> impl Future<Output = Result<CapturableWindow, CapturableContentError>>

Try and convert the given CGWindowID to a capturable window.
source§

impl PartialEq for CapturableWindow

source§

fn eq(&self, other: &CapturableWindow) -> bool

This method tests for self and other values to be equal, and is used -by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Eq for CapturableWindow

source§

impl Send for CapturableWindow

source§

impl StructuralPartialEq for CapturableWindow

source§

impl Sync for CapturableWindow

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Q
where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+ window_id: u32 +) -> impl Future<Output = Result<CapturableWindow, CapturableContentError>>
Try and convert the given CGWindowID to a capturable window.
source§

impl PartialEq for CapturableWindow

source§

fn eq(&self, other: &CapturableWindow) -> bool

This method tests for self and other values to be equal, and is used +by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
source§

impl Eq for CapturableWindow

source§

impl Send for CapturableWindow

source§

impl StructuralPartialEq for CapturableWindow

source§

impl Sync for CapturableWindow

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<Q, K> Equivalent<K> for Q
where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html index 10db565e..5a015e2a 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html @@ -1,23 +1,22 @@ -CapturableWindowFilter in crabgrab::capturable_content - Rust -
pub struct CapturableWindowFilter {
-    pub desktop_windows: bool,
-    pub onscreen_only: bool,
+CapturableWindowFilter in crabgrab::capturable_content - Rust
pub struct CapturableWindowFilter {
+    pub desktop_windows: bool,
+    pub onscreen_only: bool,
 }
Expand description

Selects the kind of windows to enumerate for capture

-

Fields§

§desktop_windows: bool

Desktop windows are elements of the desktop environment, E.G. the dock on MacOS or the start bar on Windows.

-
§onscreen_only: bool

Whether to restrict to onscreen windows

-

Trait Implementations§

source§

impl Clone for CapturableWindowFilter

source§

fn clone(&self) -> CapturableWindowFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Default for CapturableWindowFilter

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Fields§

§desktop_windows: bool

Desktop windows are elements of the desktop environment, E.G. the dock on MacOS or the start bar on Windows.

+
§onscreen_only: bool

Whether to restrict to onscreen windows

+

Trait Implementations§

source§

impl Clone for CapturableWindowFilter

source§

fn clone(&self) -> CapturableWindowFilter

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Default for CapturableWindowFilter

source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html index 24f203e0..7b3215b0 100644 --- a/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html +++ b/docs/macos_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html @@ -1,195 +1,194 @@ -CapturableWindowIterator in crabgrab::capturable_content - Rust -
pub struct CapturableWindowIterator<'content> { /* private fields */ }
Expand description

An iterator over capturable windows

-

Trait Implementations§

source§

impl ExactSizeIterator for CapturableWindowIterator<'_>

1.0.0 · source§

fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
source§

fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (exact_size_is_empty)
Returns true if the iterator is empty. Read more
source§

impl Iterator for CapturableWindowIterator<'_>

§

type Item = CapturableWindow

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
source§

fn next_chunk<const N: usize>( +CapturableWindowIterator in crabgrab::capturable_content - Rust
pub struct CapturableWindowIterator<'content> { /* private fields */ }
Expand description

An iterator over capturable windows

+

Trait Implementations§

source§

impl ExactSizeIterator for CapturableWindowIterator<'_>

1.0.0 · source§

fn len(&self) -> usize

Returns the exact remaining length of the iterator. Read more
source§

fn is_empty(&self) -> bool

🔬This is a nightly-only experimental API. (exact_size_is_empty)
Returns true if the iterator is empty. Read more
source§

impl Iterator for CapturableWindowIterator<'_>

§

type Item = CapturableWindow

The type of the elements being iterated over.
source§

fn next(&mut self) -> Option<Self::Item>

Advances the iterator and returns the next value. Read more
source§

fn size_hint(&self) -> (usize, Option<usize>)

Returns the bounds on the remaining length of the iterator. Read more
source§

fn next_chunk<const N: usize>( &mut self -) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn count(self) -> usize
where - Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where - Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where - Self: Sized,

Creates an iterator starting at the same point, but stepping by -the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where - Self: Sized, - U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where - Self: Sized, - G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator -between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each -element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where - Self: Sized, - F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element -should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where - Self: Sized,

Creates an iterator which gives the current iteration count as well as -the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where - Self: Sized,

Creates an iterator which can use the peek and peek_mut methods +) -> Result<[Self::Item; N], IntoIter<Self::Item, N>>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_next_chunk)
Advances the iterator and returns an array containing the next N values. Read more
1.0.0 · source§

fn count(self) -> usize
where + Self: Sized,

Consumes the iterator, counting the number of iterations and returning it. Read more
1.0.0 · source§

fn last(self) -> Option<Self::Item>
where + Self: Sized,

Consumes the iterator, returning the last element. Read more
source§

fn advance_by(&mut self, n: usize) -> Result<(), NonZero<usize>>

🔬This is a nightly-only experimental API. (iter_advance_by)
Advances the iterator by n elements. Read more
1.0.0 · source§

fn nth(&mut self, n: usize) -> Option<Self::Item>

Returns the nth element of the iterator. Read more
1.28.0 · source§

fn step_by(self, step: usize) -> StepBy<Self>
where + Self: Sized,

Creates an iterator starting at the same point, but stepping by +the given amount at each iteration. Read more
1.0.0 · source§

fn chain<U>(self, other: U) -> Chain<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator<Item = Self::Item>,

Takes two iterators and creates a new iterator over both in sequence. Read more
1.0.0 · source§

fn zip<U>(self, other: U) -> Zip<Self, <U as IntoIterator>::IntoIter>
where + Self: Sized, + U: IntoIterator,

‘Zips up’ two iterators into a single iterator of pairs. Read more
source§

fn intersperse_with<G>(self, separator: G) -> IntersperseWith<Self, G>
where + Self: Sized, + G: FnMut() -> Self::Item,

🔬This is a nightly-only experimental API. (iter_intersperse)
Creates a new iterator which places an item generated by separator +between adjacent items of the original iterator. Read more
1.0.0 · source§

fn map<B, F>(self, f: F) -> Map<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> B,

Takes a closure and creates an iterator which calls that closure on each +element. Read more
1.21.0 · source§

fn for_each<F>(self, f: F)
where + Self: Sized, + F: FnMut(Self::Item),

Calls a closure on each element of an iterator. Read more
1.0.0 · source§

fn filter<P>(self, predicate: P) -> Filter<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator which uses a closure to determine if an element +should be yielded. Read more
1.0.0 · source§

fn filter_map<B, F>(self, f: F) -> FilterMap<Self, F>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both filters and maps. Read more
1.0.0 · source§

fn enumerate(self) -> Enumerate<Self>
where + Self: Sized,

Creates an iterator which gives the current iteration count as well as +the next value. Read more
1.0.0 · source§

fn peekable(self) -> Peekable<Self>
where + Self: Sized,

Creates an iterator which can use the peek and peek_mut methods to look at the next element of the iterator without consuming it. See -their documentation for more information. Read more
1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where - Self: Sized, - P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where - Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where - Self: Sized,

Creates an iterator that yields the first n elements, or fewer -if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where - Self: Sized, - F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but -unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where - Self: Sized, - U: IntoIterator, - F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where - Self: Sized, - F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over -self and returns an iterator over the outputs of f. Like slice::windows(), -the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where - Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where - Self: Sized, - F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where - Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where - B: FromIterator<Self::Item>, - Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where - E: Extend<Self::Item>, - Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where - Self: Sized, - B: Default + Extend<Self::Item>, - F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, -such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where - Self: Sized, - F: FnMut(B, Self::Item) -> R, - R: Try<Output = B>,

An iterator method that applies a function as long as it returns -successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where - Self: Sized, - F: FnMut(Self::Item) -> R, - R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the -iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where - Self: Sized, - F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, -returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing -operation. Read more
source§

fn try_reduce<F, R>( +their documentation for more information. Read more

1.0.0 · source§

fn skip_while<P>(self, predicate: P) -> SkipWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that skips elements based on a predicate. Read more
1.0.0 · source§

fn take_while<P>(self, predicate: P) -> TakeWhile<Self, P>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Creates an iterator that yields elements based on a predicate. Read more
1.57.0 · source§

fn map_while<B, P>(self, predicate: P) -> MapWhile<Self, P>
where + Self: Sized, + P: FnMut(Self::Item) -> Option<B>,

Creates an iterator that both yields elements based on a predicate and maps. Read more
1.0.0 · source§

fn skip(self, n: usize) -> Skip<Self>
where + Self: Sized,

Creates an iterator that skips the first n elements. Read more
1.0.0 · source§

fn take(self, n: usize) -> Take<Self>
where + Self: Sized,

Creates an iterator that yields the first n elements, or fewer +if the underlying iterator ends sooner. Read more
1.0.0 · source§

fn scan<St, B, F>(self, initial_state: St, f: F) -> Scan<Self, St, F>
where + Self: Sized, + F: FnMut(&mut St, Self::Item) -> Option<B>,

An iterator adapter which, like fold, holds internal state, but +unlike fold, produces a new iterator. Read more
1.0.0 · source§

fn flat_map<U, F>(self, f: F) -> FlatMap<Self, U, F>
where + Self: Sized, + U: IntoIterator, + F: FnMut(Self::Item) -> U,

Creates an iterator that works like map, but flattens nested structure. Read more
source§

fn map_windows<F, R, const N: usize>(self, f: F) -> MapWindows<Self, F, N>
where + Self: Sized, + F: FnMut(&[Self::Item; N]) -> R,

🔬This is a nightly-only experimental API. (iter_map_windows)
Calls the given function f for each contiguous window of size N over +self and returns an iterator over the outputs of f. Like slice::windows(), +the windows during mapping overlap as well. Read more
1.0.0 · source§

fn fuse(self) -> Fuse<Self>
where + Self: Sized,

Creates an iterator which ends after the first None. Read more
1.0.0 · source§

fn inspect<F>(self, f: F) -> Inspect<Self, F>
where + Self: Sized, + F: FnMut(&Self::Item),

Does something with each element of an iterator, passing the value on. Read more
1.0.0 · source§

fn by_ref(&mut self) -> &mut Self
where + Self: Sized,

Borrows an iterator, rather than consuming it. Read more
1.0.0 · source§

fn collect<B>(self) -> B
where + B: FromIterator<Self::Item>, + Self: Sized,

Transforms an iterator into a collection. Read more
source§

fn collect_into<E>(self, collection: &mut E) -> &mut E
where + E: Extend<Self::Item>, + Self: Sized,

🔬This is a nightly-only experimental API. (iter_collect_into)
Collects all the items from an iterator into a collection. Read more
1.0.0 · source§

fn partition<B, F>(self, f: F) -> (B, B)
where + Self: Sized, + B: Default + Extend<Self::Item>, + F: FnMut(&Self::Item) -> bool,

Consumes an iterator, creating two collections from it. Read more
source§

fn is_partitioned<P>(self, predicate: P) -> bool
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_is_partitioned)
Checks if the elements of this iterator are partitioned according to the given predicate, +such that all those that return true precede all those that return false. Read more
1.27.0 · source§

fn try_fold<B, F, R>(&mut self, init: B, f: F) -> R
where + Self: Sized, + F: FnMut(B, Self::Item) -> R, + R: Try<Output = B>,

An iterator method that applies a function as long as it returns +successfully, producing a single, final value. Read more
1.27.0 · source§

fn try_for_each<F, R>(&mut self, f: F) -> R
where + Self: Sized, + F: FnMut(Self::Item) -> R, + R: Try<Output = ()>,

An iterator method that applies a fallible function to each item in the +iterator, stopping at the first error and returning that error. Read more
1.0.0 · source§

fn fold<B, F>(self, init: B, f: F) -> B
where + Self: Sized, + F: FnMut(B, Self::Item) -> B,

Folds every element into an accumulator by applying an operation, +returning the final result. Read more
1.51.0 · source§

fn reduce<F>(self, f: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> Self::Item,

Reduces the elements to a single one, by repeatedly applying a reducing +operation. Read more
source§

fn try_reduce<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where - Self: Sized, - F: FnMut(Self::Item, Self::Item) -> R, - R: Try<Output = Self::Item>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the -closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where - Self: Sized, - P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where - Self: Sized, - F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns -the first non-none result. Read more
source§

fn try_find<F, R>( +) -> <<R as Try>::Residual as Residual<Option<<R as Try>::Output>>>::TryType
where + Self: Sized, + F: FnMut(Self::Item, Self::Item) -> R, + R: Try<Output = Self::Item>, + <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (iterator_try_reduce)
Reduces the elements to a single one by repeatedly applying a reducing operation. If the +closure returns a failure, the failure is propagated back to the caller immediately. Read more
1.0.0 · source§

fn all<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if every element of the iterator matches a predicate. Read more
1.0.0 · source§

fn any<F>(&mut self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> bool,

Tests if any element of the iterator matches a predicate. Read more
1.0.0 · source§

fn find<P>(&mut self, predicate: P) -> Option<Self::Item>
where + Self: Sized, + P: FnMut(&Self::Item) -> bool,

Searches for an element of an iterator that satisfies a predicate. Read more
1.30.0 · source§

fn find_map<B, F>(&mut self, f: F) -> Option<B>
where + Self: Sized, + F: FnMut(Self::Item) -> Option<B>,

Applies function to the elements of iterator and returns +the first non-none result. Read more
source§

fn try_find<F, R>( &mut self, f: F -) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where - Self: Sized, - F: FnMut(&Self::Item) -> R, - R: Try<Output = bool>, - <R as Try>::Residual: Residual<Option<Self::Item>>,

🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns -the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where - Self: Sized, - P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the -specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the -specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where - B: Ord, - Self: Sized, - F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the -specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the -specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where - FromA: Default + Extend<A>, - FromB: Default + Extend<B>, - Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where - T: 'a + Copy, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where - T: 'a + Clone, - Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where - Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where - Self: Sized, - S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where - Self: Sized, - P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Lexicographically compares the PartialOrd elements of -this Iterator with those of another. The comparison works like short-circuit +) -> <<R as Try>::Residual as Residual<Option<Self::Item>>>::TryType
where + Self: Sized, + F: FnMut(&Self::Item) -> R, + R: Try<Output = bool>, + <R as Try>::Residual: Residual<Option<Self::Item>>,
🔬This is a nightly-only experimental API. (try_find)
Applies function to the elements of iterator and returns +the first true result or the first error. Read more
1.0.0 · source§

fn position<P>(&mut self, predicate: P) -> Option<usize>
where + Self: Sized, + P: FnMut(Self::Item) -> bool,

Searches for an element in an iterator, returning its index. Read more
1.6.0 · source§

fn max_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the maximum value from the +specified function. Read more
1.15.0 · source§

fn max_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the maximum value with respect to the +specified comparison function. Read more
1.6.0 · source§

fn min_by_key<B, F>(self, f: F) -> Option<Self::Item>
where + B: Ord, + Self: Sized, + F: FnMut(&Self::Item) -> B,

Returns the element that gives the minimum value from the +specified function. Read more
1.15.0 · source§

fn min_by<F>(self, compare: F) -> Option<Self::Item>
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> Ordering,

Returns the element that gives the minimum value with respect to the +specified comparison function. Read more
1.0.0 · source§

fn unzip<A, B, FromA, FromB>(self) -> (FromA, FromB)
where + FromA: Default + Extend<A>, + FromB: Default + Extend<B>, + Self: Sized + Iterator<Item = (A, B)>,

Converts an iterator of pairs into a pair of containers. Read more
1.36.0 · source§

fn copied<'a, T>(self) -> Copied<Self>
where + T: 'a + Copy, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which copies all of its elements. Read more
1.0.0 · source§

fn cloned<'a, T>(self) -> Cloned<Self>
where + T: 'a + Clone, + Self: Sized + Iterator<Item = &'a T>,

Creates an iterator which clones all of its elements. Read more
source§

fn array_chunks<const N: usize>(self) -> ArrayChunks<Self, N>
where + Self: Sized,

🔬This is a nightly-only experimental API. (iter_array_chunks)
Returns an iterator over N elements of the iterator at a time. Read more
1.11.0 · source§

fn sum<S>(self) -> S
where + Self: Sized, + S: Sum<Self::Item>,

Sums the elements of an iterator. Read more
1.11.0 · source§

fn product<P>(self) -> P
where + Self: Sized, + P: Product<Self::Item>,

Iterates over the entire iterator, multiplying all the elements Read more
source§

fn cmp_by<I, F>(self, other: I, cmp: F) -> Ordering
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Ordering,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn partial_cmp<I>(self, other: I) -> Option<Ordering>
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Lexicographically compares the PartialOrd elements of +this Iterator with those of another. The comparison works like short-circuit evaluation, returning a result without comparing the remaining elements. -As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those -of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are equal to those of -another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where - Self: Sized, - I: IntoIterator, - F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of -another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialEq<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are not equal to those of -another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where - I: IntoIterator, - Self::Item: PartialOrd<<I as IntoIterator>::Item>, - Self: Sized,

Determines if the elements of this Iterator are lexicographically -greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where - Self: Sized, - F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where - Self: Sized, - F: FnMut(Self::Item) -> K, - K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction -function. Read more

Auto Trait Implementations§

§

impl<'content> !RefUnwindSafe for CapturableWindowIterator<'content>

§

impl<'content> Send for CapturableWindowIterator<'content>

§

impl<'content> Sync for CapturableWindowIterator<'content>

§

impl<'content> Unpin for CapturableWindowIterator<'content>

§

impl<'content> !UnwindSafe for CapturableWindowIterator<'content>

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+As soon as an order can be determined, the evaluation stops and a result is returned. Read more
source§

fn partial_cmp_by<I, F>(self, other: I, partial_cmp: F) -> Option<Ordering>
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> Option<Ordering>,

🔬This is a nightly-only experimental API. (iter_order_by)
Lexicographically compares the elements of this Iterator with those +of another with respect to the specified comparison function. Read more
1.5.0 · source§

fn eq<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are equal to those of +another. Read more
source§

fn eq_by<I, F>(self, other: I, eq: F) -> bool
where + Self: Sized, + I: IntoIterator, + F: FnMut(Self::Item, <I as IntoIterator>::Item) -> bool,

🔬This is a nightly-only experimental API. (iter_order_by)
Determines if the elements of this Iterator are equal to those of +another with respect to the specified equality function. Read more
1.5.0 · source§

fn ne<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialEq<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are not equal to those of +another. Read more
1.5.0 · source§

fn lt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less than those of another. Read more
1.5.0 · source§

fn le<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +less or equal to those of another. Read more
1.5.0 · source§

fn gt<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than those of another. Read more
1.5.0 · source§

fn ge<I>(self, other: I) -> bool
where + I: IntoIterator, + Self::Item: PartialOrd<<I as IntoIterator>::Item>, + Self: Sized,

Determines if the elements of this Iterator are lexicographically +greater than or equal to those of another. Read more
source§

fn is_sorted_by<F>(self, compare: F) -> bool
where + Self: Sized, + F: FnMut(&Self::Item, &Self::Item) -> bool,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given comparator function. Read more
source§

fn is_sorted_by_key<F, K>(self, f: F) -> bool
where + Self: Sized, + F: FnMut(Self::Item) -> K, + K: PartialOrd,

🔬This is a nightly-only experimental API. (is_sorted)
Checks if the elements of this iterator are sorted using the given key extraction +function. Read more

Auto Trait Implementations§

§

impl<'content> Freeze for CapturableWindowIterator<'content>

§

impl<'content> !RefUnwindSafe for CapturableWindowIterator<'content>

§

impl<'content> Send for CapturableWindowIterator<'content>

§

impl<'content> Sync for CapturableWindowIterator<'content>

§

impl<'content> Unpin for CapturableWindowIterator<'content>

§

impl<'content> !UnwindSafe for CapturableWindowIterator<'content>

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<I> IntoIterator for I
where - I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<I> IntoIterator for I
where + I: Iterator,

§

type Item = <I as Iterator>::Item

The type of the elements being iterated over.
§

type IntoIter = I

Which kind of iterator are we turning this into?
const: unstable · source§

fn into_iter(self) -> I

Creates an iterator from a value. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/enum.CaptureConfigError.html b/docs/macos_docs/crabgrab/capture_stream/enum.CaptureConfigError.html index f7edcd8b..d9c7764b 100644 --- a/docs/macos_docs/crabgrab/capture_stream/enum.CaptureConfigError.html +++ b/docs/macos_docs/crabgrab/capture_stream/enum.CaptureConfigError.html @@ -1,24 +1,23 @@ -CaptureConfigError in crabgrab::capture_stream - Rust -
pub enum CaptureConfigError {
+CaptureConfigError in crabgrab::capture_stream - Rust

Enum crabgrab::capture_stream::CaptureConfigError

source ·
pub enum CaptureConfigError {
     UnsupportedPixelFormat,
     InvalidBufferCount,
 }
Expand description

Represents an error creating the capture config

Variants§

§

UnsupportedPixelFormat

The pixel format is unsupported by the implementation

§

InvalidBufferCount

The buffer count is out of the valid range for the implementation

-

Trait Implementations§

source§

impl Clone for CaptureConfigError

source§

fn clone(&self) -> CaptureConfigError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CaptureConfigError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CaptureConfigError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CaptureConfigError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl Send for CaptureConfigError

source§

impl Sync for CaptureConfigError

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where - T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where - T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where - T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

-
source§

impl<T, U> Into<U> for T
where - U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

+

Trait Implementations§

source§

impl Clone for CaptureConfigError

source§

fn clone(&self) -> CaptureConfigError

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for CaptureConfigError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Display for CaptureConfigError

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Error for CaptureConfigError

source§

fn source(&self) -> Option<&(dyn Error + 'static)>

The lower-level source of this error, if any. Read more
source§

fn description(&self) -> &str

👎Deprecated since 1.42.0: use the Display impl or to_string()
source§

fn cause(&self) -> Option<&dyn Error>

👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
source§

fn provide<'a>(&'a self, request: &mut Request<'a>)

🔬This is a nightly-only experimental API. (error_generic_member_access)
Provides type based access to context intended for error reports. Read more
source§

impl Send for CaptureConfigError

source§

impl Sync for CaptureConfigError

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for T
where + T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for T
where + T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for T
where + T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

+
source§

impl<T, U> Into<U> for T
where + U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

-
source§

impl<T> ToOwned for T
where - T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where - T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where - U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where - U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where - T: ?Sized,

§

impl<T> WasmNotSend for T
where - T: Send,

§

impl<T> WasmNotSendSync for T
where +From<T> for U chooses to do.

+

source§

impl<T> ToOwned for T
where + T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T> ToString for T
where + T: Display + ?Sized,

source§

default fn to_string(&self) -> String

Converts the given value to a String. Read more
source§

impl<T, U> TryFrom<U> for T
where + U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for T
where + U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<T> AutoreleaseSafe for T
where + T: ?Sized,

§

impl<T> WasmNotSend for T
where + T: Send,

§

impl<T> WasmNotSendSync for T
where T: WasmNotSend + WasmNotSync,

§

impl<T> WasmNotSync for T
where - T: Sync,

\ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html b/docs/macos_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html index f6707b68..cea4252c 100644 --- a/docs/macos_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html +++ b/docs/macos_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html @@ -1,5 +1,4 @@ -CapturePixelFormat in crabgrab::capture_stream - Rust -
#[non_exhaustive]
pub enum CapturePixelFormat { +CapturePixelFormat in crabgrab::capture_stream - Rust

Enum crabgrab::capture_stream::CapturePixelFormat

source ·
#[non_exhaustive]
pub enum CapturePixelFormat { Bgra8888, Argb2101010, V420, @@ -17,25 +16,25 @@
  • 1 channel, luminance (Y), 8 bits per pixel, full range: [0, 255]
  • 2 channels, chrominance (CbCr) 8 bits bits per channel per two pixels vertically, range: [0, 255]
  • -

    Trait Implementations§

    source§

    impl Clone for CapturePixelFormat

    source§

    fn clone(&self) -> CapturePixelFormat

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CapturePixelFormat

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for CapturePixelFormat

    source§

    fn eq(&self, other: &CapturePixelFormat) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for CapturePixelFormat

    source§

    impl Eq for CapturePixelFormat

    source§

    impl StructuralPartialEq for CapturePixelFormat

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for CapturePixelFormat

    source§

    fn clone(&self) -> CapturePixelFormat

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CapturePixelFormat

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for CapturePixelFormat

    source§

    fn eq(&self, other: &CapturePixelFormat) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for CapturePixelFormat

    source§

    impl Eq for CapturePixelFormat

    source§

    impl StructuralPartialEq for CapturePixelFormat

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/enum.StreamCreateError.html b/docs/macos_docs/crabgrab/capture_stream/enum.StreamCreateError.html index fb8f82b7..2595a36d 100644 --- a/docs/macos_docs/crabgrab/capture_stream/enum.StreamCreateError.html +++ b/docs/macos_docs/crabgrab/capture_stream/enum.StreamCreateError.html @@ -1,25 +1,24 @@ -StreamCreateError in crabgrab::capture_stream - Rust -
    pub enum StreamCreateError {
    -    Other(String),
    +StreamCreateError in crabgrab::capture_stream - Rust

    Enum crabgrab::capture_stream::StreamCreateError

    source ·
    pub enum StreamCreateError {
    +    Other(String),
         UnsupportedPixelFormat,
    -    UnauthorizedFeature(String),
    +    UnauthorizedFeature(String),
     }
    Expand description

    This represents an error when creating a capture stream

    -

    Variants§

    §

    Other(String)

    §

    UnsupportedPixelFormat

    The supplied pixel format is unsupported by the implementation

    -
    §

    UnauthorizedFeature(String)

    Requested features are not authorized

    -

    Trait Implementations§

    source§

    impl Clone for StreamCreateError

    source§

    fn clone(&self) -> StreamCreateError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamCreateError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamCreateError

    source§

    impl Sync for StreamCreateError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Other(String)

    §

    UnsupportedPixelFormat

    The supplied pixel format is unsupported by the implementation

    +
    §

    UnauthorizedFeature(String)

    Requested features are not authorized

    +

    Trait Implementations§

    source§

    impl Clone for StreamCreateError

    source§

    fn clone(&self) -> StreamCreateError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamCreateError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamCreateError

    source§

    impl Sync for StreamCreateError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/enum.StreamError.html b/docs/macos_docs/crabgrab/capture_stream/enum.StreamError.html index a57ea8aa..e680f688 100644 --- a/docs/macos_docs/crabgrab/capture_stream/enum.StreamError.html +++ b/docs/macos_docs/crabgrab/capture_stream/enum.StreamError.html @@ -1,21 +1,20 @@ -StreamError in crabgrab::capture_stream - Rust -
    pub enum StreamError {
    -    Other(String),
    +StreamError in crabgrab::capture_stream - Rust

    Enum crabgrab::capture_stream::StreamError

    source ·
    pub enum StreamError {
    +    Other(String),
     }
    Expand description

    This represents an error during a stream, for example a failure to retrieve a video or audio frame

    -

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for StreamError

    source§

    fn clone(&self) -> StreamError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for StreamError

    source§

    fn clone(&self) -> StreamError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/enum.StreamEvent.html b/docs/macos_docs/crabgrab/capture_stream/enum.StreamEvent.html index b8caa14d..9ce9cb54 100644 --- a/docs/macos_docs/crabgrab/capture_stream/enum.StreamEvent.html +++ b/docs/macos_docs/crabgrab/capture_stream/enum.StreamEvent.html @@ -1,5 +1,4 @@ -StreamEvent in crabgrab::capture_stream - Rust -
    pub enum StreamEvent {
    +StreamEvent in crabgrab::capture_stream - Rust

    Enum crabgrab::capture_stream::StreamEvent

    source ·
    pub enum StreamEvent {
         Audio(AudioFrame),
         Video(VideoFrame),
         Idle,
    @@ -9,18 +8,18 @@
     
    §

    Video(VideoFrame)

    This event is produced when the stream receives a new video frame

    §

    Idle

    This event is produced when the stream goes idle - IE when no new frames are expected for some time, like when a window minimizes

    §

    End

    This event is produced once at the end of the stream

    -

    Trait Implementations§

    source§

    impl Debug for StreamEvent

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for StreamEvent

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/enum.StreamStopError.html b/docs/macos_docs/crabgrab/capture_stream/enum.StreamStopError.html index 6e100287..2fb2031b 100644 --- a/docs/macos_docs/crabgrab/capture_stream/enum.StreamStopError.html +++ b/docs/macos_docs/crabgrab/capture_stream/enum.StreamStopError.html @@ -1,22 +1,21 @@ -StreamStopError in crabgrab::capture_stream - Rust -
    pub enum StreamStopError {
    -    Other(String),
    +StreamStopError in crabgrab::capture_stream - Rust

    Enum crabgrab::capture_stream::StreamStopError

    source ·
    pub enum StreamStopError {
    +    Other(String),
         AlreadyStopped,
     }
    Expand description

    This represents an error while stopping a stream

    -

    Variants§

    §

    Other(String)

    §

    AlreadyStopped

    The stream was already stopped

    -

    Trait Implementations§

    source§

    impl Debug for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamStopError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamStopError

    source§

    impl Sync for StreamStopError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Other(String)

    §

    AlreadyStopped

    The stream was already stopped

    +

    Trait Implementations§

    source§

    impl Debug for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamStopError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamStopError

    source§

    impl Sync for StreamStopError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/index.html b/docs/macos_docs/crabgrab/capture_stream/index.html index a28fbf2b..65b82571 100644 --- a/docs/macos_docs/crabgrab/capture_stream/index.html +++ b/docs/macos_docs/crabgrab/capture_stream/index.html @@ -1,3 +1,2 @@ -crabgrab::capture_stream - Rust -
    Expand description

    The actual capture stream and related constructs

    +crabgrab::capture_stream - Rust

    Module crabgrab::capture_stream

    source ·
    Expand description

    The actual capture stream and related constructs

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html b/docs/macos_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html index 7b4921b8..b1388b26 100644 --- a/docs/macos_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html +++ b/docs/macos_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html @@ -1,26 +1,25 @@ -AudioCaptureConfig in crabgrab::capture_stream - Rust -
    pub struct AudioCaptureConfig { /* private fields */ }
    Expand description

    Configuration settings for audio streams

    +AudioCaptureConfig in crabgrab::capture_stream - Rust

    Struct crabgrab::capture_stream::AudioCaptureConfig

    source ·
    pub struct AudioCaptureConfig { /* private fields */ }
    Expand description

    Configuration settings for audio streams

    Implementations§

    source§

    impl AudioCaptureConfig

    source

    pub fn new() -> Self

    Creates a new audio capture config with default settings:

    • 24000 Hz
    • Mono
    -

    Trait Implementations§

    source§

    impl Clone for AudioCaptureConfig

    source§

    fn clone(&self) -> AudioCaptureConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AudioCaptureConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MacosAudioCaptureConfigExt for AudioCaptureConfig

    Trait Implementations§

    source§

    impl Clone for AudioCaptureConfig

    source§

    fn clone(&self) -> AudioCaptureConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AudioCaptureConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MacosAudioCaptureConfigExt for AudioCaptureConfig

    source§

    fn set_exclude_current_process_audio( self, - exclude_current_process_audio: bool -) -> Self

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + exclude_current_process_audio: bool +) -> Self

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/struct.CaptureAccessToken.html b/docs/macos_docs/crabgrab/capture_stream/struct.CaptureAccessToken.html index b574c29b..3fa883af 100644 --- a/docs/macos_docs/crabgrab/capture_stream/struct.CaptureAccessToken.html +++ b/docs/macos_docs/crabgrab/capture_stream/struct.CaptureAccessToken.html @@ -1,18 +1,17 @@ -CaptureAccessToken in crabgrab::capture_stream - Rust -
    pub struct CaptureAccessToken { /* private fields */ }
    Expand description

    Represents programmatic capture access

    -

    Implementations§

    Trait Implementations§

    source§

    impl Clone for CaptureAccessToken

    source§

    fn clone(&self) -> CaptureAccessToken

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaptureAccessToken

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for CaptureAccessToken

    source§

    impl Send for CaptureAccessToken

    source§

    impl Sync for CaptureAccessToken

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +CaptureAccessToken in crabgrab::capture_stream - Rust

    Struct crabgrab::capture_stream::CaptureAccessToken

    source ·
    pub struct CaptureAccessToken { /* private fields */ }
    Expand description

    Represents programmatic capture access

    +

    Implementations§

    Trait Implementations§

    source§

    impl Clone for CaptureAccessToken

    source§

    fn clone(&self) -> CaptureAccessToken

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaptureAccessToken

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for CaptureAccessToken

    source§

    impl Send for CaptureAccessToken

    source§

    impl Sync for CaptureAccessToken

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/struct.CaptureConfig.html b/docs/macos_docs/crabgrab/capture_stream/struct.CaptureConfig.html index ec3263d4..8bb762cd 100644 --- a/docs/macos_docs/crabgrab/capture_stream/struct.CaptureConfig.html +++ b/docs/macos_docs/crabgrab/capture_stream/struct.CaptureConfig.html @@ -1,37 +1,36 @@ -CaptureConfig in crabgrab::capture_stream - Rust -
    pub struct CaptureConfig { /* private fields */ }
    Expand description

    Configuration settings for a capture stream

    +CaptureConfig in crabgrab::capture_stream - Rust

    Struct crabgrab::capture_stream::CaptureConfig

    source ·
    pub struct CaptureConfig { /* private fields */ }
    Expand description

    Configuration settings for a capture stream

    Implementations§

    source§

    impl CaptureConfig

    source

    pub fn with_window( window: CapturableWindow, pixel_format: CapturePixelFormat -) -> Result<CaptureConfig, CaptureConfigError>

    Create a capture configuration for a given capturable window

    +) -> Result<CaptureConfig, CaptureConfigError>

    Create a capture configuration for a given capturable window

    source

    pub fn with_display( display: CapturableDisplay, pixel_format: CapturePixelFormat ) -> CaptureConfig

    Create a capture configuration for a given capturable display

    -
    source

    pub fn with_buffer_count(self, buffer_count: usize) -> Self

    Configure the buffer count - the number of frames in the capture queue.

    +
    source

    pub fn with_buffer_count(self, buffer_count: usize) -> Self

    Configure the buffer count - the number of frames in the capture queue.

    Higher numbers mean higher latency, but smoother performance

    -
    source

    pub fn with_show_cursor(self, show_cursor: bool) -> Self

    Configure whether the cursor is visible in the capture

    +
    source

    pub fn with_show_cursor(self, show_cursor: bool) -> Self

    Configure whether the cursor is visible in the capture

    source

    pub fn with_output_size(self, output_size: Size) -> Self

    Configure the output texture size - by default, this will match the captured content at the time of enumeration

    -

    Trait Implementations§

    source§

    impl Clone for CaptureConfig

    source§

    fn clone(&self) -> CaptureConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaptureConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MacosCaptureConfigExt for CaptureConfig

    source§

    fn with_scale_to_fit(self, scale_to_fit: bool) -> Self

    Set whether or not to scale content to the output size
    source§

    fn with_maximum_fps(self, maximum_fps: Option<f32>) -> Self

    Set the maximum capture frame-rate
    source§

    fn with_metal_device(self, metal_device: Device) -> Self

    Set the metal device to use for texture creation
    source§

    fn with_resolution_type( +

    Trait Implementations§

    source§

    impl Clone for CaptureConfig

    source§

    fn clone(&self) -> CaptureConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaptureConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MacosCaptureConfigExt for CaptureConfig

    source§

    fn with_scale_to_fit(self, scale_to_fit: bool) -> Self

    Set whether or not to scale content to the output size
    source§

    fn with_maximum_fps(self, maximum_fps: Option<f32>) -> Self

    Set the maximum capture frame-rate
    source§

    fn with_metal_device(self, metal_device: Device) -> Self

    Set the metal device to use for texture creation
    source§

    fn with_resolution_type( self, resolution_type: MacosCaptureResolutionType ) -> Self

    Set the resolution type of the capture. Does nothing on macos before OS 14.0
    source§

    impl WgpuCaptureConfigExt for CaptureConfig

    source§

    fn with_wgpu_device( self, - wgpu_device: Arc<dyn AsRef<Device> + Send + Sync + 'static> -) -> Result<Self, String>

    Supply a Wgpu device to the config, allowing the generation of Wgpu textures from video frames

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + wgpu_device: Arc<dyn AsRef<Device> + Send + Sync + 'static> +) -> Result<Self, String>

    Supply a Wgpu device to the config, allowing the generation of Wgpu textures from video frames

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/capture_stream/struct.CaptureStream.html b/docs/macos_docs/crabgrab/capture_stream/struct.CaptureStream.html index de6a07d1..34bb734c 100644 --- a/docs/macos_docs/crabgrab/capture_stream/struct.CaptureStream.html +++ b/docs/macos_docs/crabgrab/capture_stream/struct.CaptureStream.html @@ -1,26 +1,25 @@ -CaptureStream in crabgrab::capture_stream - Rust -
    pub struct CaptureStream { /* private fields */ }
    Expand description

    Represents an active capture stream

    -

    Implementations§

    source§

    impl CaptureStream

    source

    pub fn test_access(borderless: bool) -> Option<CaptureAccessToken>

    Test whether the calling application has permission to capture content

    -
    source

    pub async fn request_access(borderless: bool) -> Option<CaptureAccessToken>

    Prompt the user for permission to capture content

    +CaptureStream in crabgrab::capture_stream - Rust

    Struct crabgrab::capture_stream::CaptureStream

    source ·
    pub struct CaptureStream { /* private fields */ }
    Expand description

    Represents an active capture stream

    +

    Implementations§

    source§

    impl CaptureStream

    source

    pub fn test_access(borderless: bool) -> Option<CaptureAccessToken>

    Test whether the calling application has permission to capture content

    +
    source

    pub async fn request_access(borderless: bool) -> Option<CaptureAccessToken>

    Prompt the user for permission to capture content

    source

    pub fn supported_pixel_formats() -> &'static [CapturePixelFormat]

    Gets the implementation’s supported pixel formats

    source

    pub fn new( token: CaptureAccessToken, config: CaptureConfig, - callback: impl FnMut(Result<StreamEvent, StreamError>) + Send + 'static -) -> Result<Self, StreamCreateError>

    Start a new capture stream with the given stream callback

    -
    source

    pub fn stop(&mut self) -> Result<(), StreamStopError>

    Stop the capture

    -

    Trait Implementations§

    source§

    impl MetalCaptureStreamExt for CaptureStream

    source§

    fn get_metal_device(&self) -> Device

    Get the metal device used for frame capture
    source§

    impl WgpuCaptureStreamExt for CaptureStream

    source§

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)
    source§

    fn get_wgpu_device_wrapper( + callback: impl FnMut(Result<StreamEvent, StreamError>) + Send + 'static +) -> Result<Self, StreamCreateError>

    Start a new capture stream with the given stream callback

    +
    source

    pub fn stop(&mut self) -> Result<(), StreamStopError>

    Stop the capture

    +

    Trait Implementations§

    source§

    impl MetalCaptureStreamExt for CaptureStream

    source§

    fn get_metal_device(&self) -> Device

    Get the metal device used for frame capture
    source§

    impl WgpuCaptureStreamExt for CaptureStream

    source§

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)
    source§

    fn get_wgpu_device_wrapper( &self -) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>

    Gets the Wgpu device wrapper supplied to CaptureConfig::with_wgpu_device(..)
    source§

    impl Send for CaptureStream

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>
    Gets the Wgpu device wrapper supplied to CaptureConfig::with_wgpu_device(..)
    source§

    impl Send for CaptureStream

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html b/docs/macos_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html index cdb5ec4b..41935ae6 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html @@ -1,22 +1,51 @@ -FrameBitmap in crabgrab::feature::bitmap - Rust -
    pub enum FrameBitmap {
    -    BgraUnorm8x4(FrameBitmapBgraUnorm8x4),
    -    RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102),
    -    RgbaF16x4(FrameBitmapRgbaF16x4),
    -    YCbCr(FrameBitmapYCbCr),
    +FrameBitmap in crabgrab::feature::bitmap - Rust

    Enum crabgrab::feature::bitmap::FrameBitmap

    source ·
    pub enum FrameBitmap<DataBgra: BitmapDataBgra8x4, DataArgbPacked: BitmapDataArgbUnormPacked2101010, DataRgbaF16: BitmapDataRgbaF16x4, DataLuma: BitmapDataLuma, DataChroma: BitmapDataChroma> {
    +    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<DataBgra>),
    +    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<DataArgbPacked>),
    +    RgbaF16x4(FrameBitmapRgbaF16x4<DataRgbaF16>),
    +    YCbCr(FrameBitmapYCbCr<DataLuma, DataChroma>),
     }
    Expand description

    A bitmap image of the selected format

    -

    Variants§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<DataBgra>)

    §

    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<DataArgbPacked>)

    §

    RgbaF16x4(FrameBitmapRgbaF16x4<DataRgbaF16>)

    §

    YCbCr(FrameBitmapYCbCr<DataLuma, DataChroma>)

    Auto Trait Implementations§

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Freeze for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataBgra: Freeze, + DataArgbPacked: Freeze, + DataRgbaF16: Freeze, + DataLuma: Freeze, + DataChroma: Freeze,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> RefUnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataBgra: RefUnwindSafe, + DataArgbPacked: RefUnwindSafe, + DataRgbaF16: RefUnwindSafe, + DataLuma: RefUnwindSafe, + DataChroma: RefUnwindSafe,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Send for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataBgra: Send, + DataArgbPacked: Send, + DataRgbaF16: Send, + DataLuma: Send, + DataChroma: Send,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Sync for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataBgra: Sync, + DataArgbPacked: Sync, + DataRgbaF16: Sync, + DataLuma: Sync, + DataChroma: Sync,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Unpin for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataBgra: Unpin, + DataArgbPacked: Unpin, + DataRgbaF16: Unpin, + DataLuma: Unpin, + DataChroma: Unpin,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> UnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataBgra: UnwindSafe, + DataArgbPacked: UnwindSafe, + DataRgbaF16: UnwindSafe, + DataLuma: UnwindSafe, + DataChroma: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html b/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html index ca4304fd..ab099ae4 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html @@ -1,21 +1,20 @@ -VideoFrameBitmapError in crabgrab::feature::bitmap - Rust -
    pub enum VideoFrameBitmapError {
    -    Other(String),
    +VideoFrameBitmapError in crabgrab::feature::bitmap - Rust

    Enum crabgrab::feature::bitmap::VideoFrameBitmapError

    source ·
    pub enum VideoFrameBitmapError {
    +    Other(String),
     }
    Expand description

    Represents an error while generating a frame bitmap

    -

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for VideoFrameBitmapError

    source§

    fn clone(&self) -> VideoFrameBitmapError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for VideoFrameBitmapError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for VideoFrameBitmapError

    source§

    fn clone(&self) -> VideoFrameBitmapError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for VideoFrameBitmapError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoRange.html b/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoRange.html index 9c712b4f..3db73129 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoRange.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/enum.VideoRange.html @@ -1,22 +1,21 @@ -VideoRange in crabgrab::feature::bitmap - Rust -
    pub enum VideoRange {
    +VideoRange in crabgrab::feature::bitmap - Rust

    Enum crabgrab::feature::bitmap::VideoRange

    source ·
    pub enum VideoRange {
         Video,
         Full,
     }
    Expand description

    The video range for a YCbCr format bitmap

    Variants§

    §

    Video

    Luma: [16, 240], Chroma: [0, 255]

    §

    Full

    Luma: [0, 255], Chroma: [0, 255]

    -

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/index.html b/docs/macos_docs/crabgrab/feature/bitmap/index.html index 34c01012..08e2f3f8 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/index.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/index.html @@ -1,4 +1,3 @@ -crabgrab::feature::bitmap - Rust -

    Module crabgrab::feature::bitmap

    source ·
    Expand description

    Frame to Bitmap conversion +crabgrab::feature::bitmap - Rust

    Module crabgrab::feature::bitmap

    source ·
    Expand description

    Frame to Bitmap conversion (requires bitmap feature)

    -

    Structs§

    Enums§

    Traits§

    \ No newline at end of file +

    Structs§

    Enums§

    Traits§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/sidebar-items.js b/docs/macos_docs/crabgrab/feature/bitmap/sidebar-items.js index 343d6815..c0e5f1e9 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/sidebar-items.js +++ b/docs/macos_docs/crabgrab/feature/bitmap/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["FrameBitmap","VideoFrameBitmapError","VideoRange"],"struct":["FrameBitmapBgraUnorm8x4","FrameBitmapRgbaF16x4","FrameBitmapRgbaUnormPacked1010102","FrameBitmapYCbCr"],"trait":["VideoFrameBitmap"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["FrameBitmap","VideoFrameBitmapError","VideoRange"],"struct":["FrameBitmapArgbUnormPacked2101010","FrameBitmapBgraUnorm8x4","FrameBitmapPool","FrameBitmapRgbaF16x4","FrameBitmapYCbCr","PooledBitmap"],"trait":["BitmapDataArgbUnormPacked2101010","BitmapDataBgra8x4","BitmapDataChroma","BitmapDataLuma","BitmapDataRgbaF16x4","VideoFrameBitmap"],"type":["BoxedSliceFrameBitmap","PooledFrameBitmap"]}; \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapArgbUnormPacked2101010.html b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapArgbUnormPacked2101010.html new file mode 100644 index 00000000..580e50a3 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapArgbUnormPacked2101010.html @@ -0,0 +1,26 @@ +FrameBitmapArgbUnormPacked2101010 in crabgrab::feature::bitmap - Rust
    pub struct FrameBitmapArgbUnormPacked2101010<Data: BitmapDataArgbUnormPacked2101010> {
    +    pub data: Data,
    +    pub width: usize,
    +    pub height: usize,
    +}
    Expand description

    A Rgba1010102 format bitmap

    +

    Fields§

    §data: Data§width: usize§height: usize

    Auto Trait Implementations§

    §

    impl<Data> Freeze for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Freeze,

    §

    impl<Data> RefUnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: RefUnwindSafe,

    §

    impl<Data> Send for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Send,

    §

    impl<Data> Sync for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Sync,

    §

    impl<Data> Unpin for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Unpin,

    §

    impl<Data> UnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where + T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where + T: Sync,

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html index f1ce8623..0e24a01e 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html @@ -1,21 +1,26 @@ -FrameBitmapBgraUnorm8x4 in crabgrab::feature::bitmap - Rust -
    pub struct FrameBitmapBgraUnorm8x4 {
    -    pub data: Box<[[u8; 4]]>,
    -    pub width: usize,
    -    pub height: usize,
    +FrameBitmapBgraUnorm8x4 in crabgrab::feature::bitmap - Rust

    Struct crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4

    source ·
    pub struct FrameBitmapBgraUnorm8x4<Data: BitmapDataBgra8x4> {
    +    pub data: Data,
    +    pub width: usize,
    +    pub height: usize,
     }
    Expand description

    A Bgra8888 format bitmap

    -

    Fields§

    §data: Box<[[u8; 4]]>§width: usize§height: usize

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §data: Data§width: usize§height: usize

    Auto Trait Implementations§

    §

    impl<Data> Freeze for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Freeze,

    §

    impl<Data> RefUnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where + Data: RefUnwindSafe,

    §

    impl<Data> Send for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Send,

    §

    impl<Data> Sync for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Sync,

    §

    impl<Data> Unpin for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Unpin,

    §

    impl<Data> UnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where + Data: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapPool.html b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapPool.html new file mode 100644 index 00000000..833f5444 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapPool.html @@ -0,0 +1,24 @@ +FrameBitmapPool in crabgrab::feature::bitmap - Rust

    Struct crabgrab::feature::bitmap::FrameBitmapPool

    source ·
    pub struct FrameBitmapPool { /* private fields */ }
    Expand description

    A pool of frame bitmaps

    +

    Implementations§

    source§

    impl FrameBitmapPool

    source

    pub fn new_with_initial_capacity( + capacity: usize, + initial_resolution: (usize, usize), + max: usize, + format: CapturePixelFormat +) -> Self

    Create a new bitmap pool with an initial capacity and resolution for the given format, limited to max pooled bitmaps

    +
    source

    pub fn new(max: usize) -> Self

    Create a new frame bitmap pool, limited to max pooled bitmaps

    +
    source

    pub fn free_pooled(&self)

    Free all pooled bitmaps - this happens automatically on drop(), but you can free them ahead of time if you need to.

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where + T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where + T: Sync,

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html index 956e2547..4b6e27f8 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html @@ -1,21 +1,26 @@ -FrameBitmapRgbaF16x4 in crabgrab::feature::bitmap - Rust -
    pub struct FrameBitmapRgbaF16x4 {
    -    pub data: Box<[[f16; 4]]>,
    -    pub width: usize,
    -    pub height: usize,
    +FrameBitmapRgbaF16x4 in crabgrab::feature::bitmap - Rust

    Struct crabgrab::feature::bitmap::FrameBitmapRgbaF16x4

    source ·
    pub struct FrameBitmapRgbaF16x4<Data: BitmapDataRgbaF16x4> {
    +    pub data: Data,
    +    pub width: usize,
    +    pub height: usize,
     }
    Expand description

    A RgbaF16x4 format bitmap

    -

    Fields§

    §data: Box<[[f16; 4]]>§width: usize§height: usize

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §data: Data§width: usize§height: usize

    Auto Trait Implementations§

    §

    impl<Data> Freeze for FrameBitmapRgbaF16x4<Data>
    where + Data: Freeze,

    §

    impl<Data> RefUnwindSafe for FrameBitmapRgbaF16x4<Data>
    where + Data: RefUnwindSafe,

    §

    impl<Data> Send for FrameBitmapRgbaF16x4<Data>
    where + Data: Send,

    §

    impl<Data> Sync for FrameBitmapRgbaF16x4<Data>
    where + Data: Sync,

    §

    impl<Data> Unpin for FrameBitmapRgbaF16x4<Data>
    where + Data: Unpin,

    §

    impl<Data> UnwindSafe for FrameBitmapRgbaF16x4<Data>
    where + Data: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html index ff09dcac..e5a3779e 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html @@ -1,28 +1,39 @@ -FrameBitmapYCbCr in crabgrab::feature::bitmap - Rust -
    pub struct FrameBitmapYCbCr {
    -    pub luma_data: Box<[u8]>,
    -    pub luma_width: usize,
    -    pub luma_height: usize,
    -    pub chroma_data: Box<[[u8; 2]]>,
    -    pub chroma_width: usize,
    -    pub chroma_height: usize,
    +FrameBitmapYCbCr in crabgrab::feature::bitmap - Rust

    Struct crabgrab::feature::bitmap::FrameBitmapYCbCr

    source ·
    pub struct FrameBitmapYCbCr<LumaData: BitmapDataLuma, ChromaData: BitmapDataChroma> {
    +    pub luma_data: LumaData,
    +    pub luma_width: usize,
    +    pub luma_height: usize,
    +    pub chroma_data: ChromaData,
    +    pub chroma_width: usize,
    +    pub chroma_height: usize,
         pub range: VideoRange,
     }
    Expand description

    A YCbCr image, corresponding to either V420 or F420 pixel formats.

    Dual-planar, with luminance (Y) in one plane, and chrominance (CbCr) in another. Note that each plane may have a different size, as with V420 format, where the chroma plane is 2 by 2 blocks, but luma is per-pixel

    -

    Fields§

    §luma_data: Box<[u8]>§luma_width: usize§luma_height: usize§chroma_data: Box<[[u8; 2]]>§chroma_width: usize§chroma_height: usize§range: VideoRange

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §luma_data: LumaData§luma_width: usize§luma_height: usize§chroma_data: ChromaData§chroma_width: usize§chroma_height: usize§range: VideoRange

    Auto Trait Implementations§

    §

    impl<LumaData, ChromaData> Freeze for FrameBitmapYCbCr<LumaData, ChromaData>
    where + LumaData: Freeze, + ChromaData: Freeze,

    §

    impl<LumaData, ChromaData> RefUnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where + LumaData: RefUnwindSafe, + ChromaData: RefUnwindSafe,

    §

    impl<LumaData, ChromaData> Send for FrameBitmapYCbCr<LumaData, ChromaData>
    where + LumaData: Send, + ChromaData: Send,

    §

    impl<LumaData, ChromaData> Sync for FrameBitmapYCbCr<LumaData, ChromaData>
    where + LumaData: Sync, + ChromaData: Sync,

    §

    impl<LumaData, ChromaData> Unpin for FrameBitmapYCbCr<LumaData, ChromaData>
    where + LumaData: Unpin, + ChromaData: Unpin,

    §

    impl<LumaData, ChromaData> UnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where + LumaData: UnwindSafe, + ChromaData: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/struct.PooledBitmap.html b/docs/macos_docs/crabgrab/feature/bitmap/struct.PooledBitmap.html new file mode 100644 index 00000000..7b7c17a9 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/struct.PooledBitmap.html @@ -0,0 +1,27 @@ +PooledBitmap in crabgrab::feature::bitmap - Rust

    Struct crabgrab::feature::bitmap::PooledBitmap

    source ·
    pub struct PooledBitmap<T: Sized + Copy + Zeroable> {
    +    pub width: usize,
    +    pub height: usize,
    +    /* private fields */
    +}
    Expand description

    A pooled bitmap, belinging to it’s creator BitmapPool. When this bitmap is dropped, it will be returned to it’s pool.

    +

    Fields§

    §width: usize§height: usize

    Trait Implementations§

    source§

    impl<T: Sized + Zeroable + Copy> AsMut<[T]> for PooledBitmap<T>

    source§

    fn as_mut(&mut self) -> &mut [T]

    Converts this type into a mutable reference of the (usually inferred) input type.
    source§

    impl<T: Sized + Zeroable + Copy> AsRef<[T]> for PooledBitmap<T>

    source§

    fn as_ref(&self) -> &[T]

    Converts this type into a shared reference of the (usually inferred) input type.

    Auto Trait Implementations§

    §

    impl<T> Freeze for PooledBitmap<T>

    §

    impl<T> !RefUnwindSafe for PooledBitmap<T>

    §

    impl<T> Send for PooledBitmap<T>
    where + T: Send,

    §

    impl<T> Sync for PooledBitmap<T>
    where + T: Sync + Send,

    §

    impl<T> Unpin for PooledBitmap<T>

    §

    impl<T> !UnwindSafe for PooledBitmap<T>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    source§

    impl<T> BitmapDataArgbUnormPacked2101010 for T
    where + T: AsRef<[u32]> + AsMut<[u32]>,

    source§

    impl<T> BitmapDataBgra8x4 for T
    where + T: AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]>,

    source§

    impl<T> BitmapDataChroma for T
    where + T: AsRef<[[u8; 2]]> + AsMut<[[u8; 2]]>,

    source§

    impl<T> BitmapDataLuma for T
    where + T: AsRef<[u8]> + AsMut<[u8]>,

    source§

    impl<T> BitmapDataRgbaF16x4 for T
    where + T: AsRef<[[f16; 4]]> + AsMut<[[f16; 4]]>,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where + T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where + T: Sync,

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.html new file mode 100644 index 00000000..611b4266 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.html @@ -0,0 +1,2 @@ +BitmapDataArgbUnormPacked2101010 in crabgrab::feature::bitmap - Rust
    pub trait BitmapDataArgbUnormPacked2101010: Sized + AsRef<[u32]> { }
    Expand description

    Bitmap data in the Argb2101010 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.html new file mode 100644 index 00000000..f3cf3974 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.html @@ -0,0 +1,2 @@ +BitmapDataBgra8x4 in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::BitmapDataBgra8x4

    source ·
    pub trait BitmapDataBgra8x4: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]> { }
    Expand description

    Bitmap data in the Bgra8888 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]>> BitmapDataBgra8x4 for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataChroma.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataChroma.html new file mode 100644 index 00000000..2b3d1221 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataChroma.html @@ -0,0 +1,2 @@ +BitmapDataChroma in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::BitmapDataChroma

    source ·
    pub trait BitmapDataChroma: Sized + AsRef<[[u8; 2]]> { }
    Expand description

    Bitmap data in the CbCr Chroma/u8x2 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[u8; 2]]> + AsMut<[[u8; 2]]>> BitmapDataChroma for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataLuma.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataLuma.html new file mode 100644 index 00000000..22a00ca7 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataLuma.html @@ -0,0 +1,2 @@ +BitmapDataLuma in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::BitmapDataLuma

    source ·
    pub trait BitmapDataLuma: Sized + AsRef<[u8]> { }
    Expand description

    Bitmap data in the Luma/u8 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[u8]> + AsMut<[u8]>> BitmapDataLuma for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.html new file mode 100644 index 00000000..fb737449 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.html @@ -0,0 +1,2 @@ +BitmapDataRgbaF16x4 in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::BitmapDataRgbaF16x4

    source ·
    pub trait BitmapDataRgbaF16x4: Sized + AsRef<[[f16; 4]]> { }
    Expand description

    Bitmap data in the RgbaF16x4 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[f16; 4]]> + AsMut<[[f16; 4]]>> BitmapDataRgbaF16x4 for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeArgbUnormPacked2101010.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeArgbUnormPacked2101010.html new file mode 100644 index 00000000..e4758286 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeArgbUnormPacked2101010.html @@ -0,0 +1 @@ +DataTypeArgbUnormPacked2101010 in crabgrab::feature::bitmap - Rust
    pub trait DataTypeArgbUnormPacked2101010: Sized + AsRef<[u32]> { }

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeBgra8x4.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeBgra8x4.html new file mode 100644 index 00000000..980e7e74 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeBgra8x4.html @@ -0,0 +1 @@ +DataTypeBgra8x4 in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::DataTypeBgra8x4

    source ·
    pub trait DataTypeBgra8x4: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]> { }

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]>> DataTypeBgra8x4 for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeChroma.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeChroma.html new file mode 100644 index 00000000..63c5cbfb --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeChroma.html @@ -0,0 +1 @@ +DataTypeChroma in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::DataTypeChroma

    source ·
    pub trait DataTypeChroma: Sized + AsRef<[[u8; 2]]> { }

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[u8; 2]]> + AsMut<[[u8; 2]]>> DataTypeChroma for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeLuma.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeLuma.html new file mode 100644 index 00000000..8d0e1f1f --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeLuma.html @@ -0,0 +1 @@ +DataTypeLuma in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::DataTypeLuma

    source ·
    pub trait DataTypeLuma: Sized + AsRef<[u8]> { }

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[u8]> + AsMut<[u8]>> DataTypeLuma for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeRgbaF16x4.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeRgbaF16x4.html new file mode 100644 index 00000000..840d7f63 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.DataTypeRgbaF16x4.html @@ -0,0 +1 @@ +DataTypeRgbaF16x4 in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::DataTypeRgbaF16x4

    source ·
    pub trait DataTypeRgbaF16x4: Sized + AsRef<[[f16; 4]]> { }

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[f16; 4]]> + AsMut<[[f16; 4]]>> DataTypeRgbaF16x4 for T

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html index d59c298b..10f87019 100644 --- a/docs/macos_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html @@ -1,8 +1,24 @@ -VideoFrameBitmap in crabgrab::feature::bitmap - Rust -
    pub trait VideoFrameBitmap {
    -    // Required method
    -    fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>;
    +VideoFrameBitmap in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::VideoFrameBitmap

    source ·
    pub trait VideoFrameBitmap {
    +    // Required methods
    +    fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>;
    +    fn try_get_pooled_bitmap(
    +        &self,
    +        bitmap_pool: &FrameBitmapPool
    +    ) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>;
    +    fn get_pooled_bitmap(
    +        &self,
    +        bitmap_pool: &FrameBitmapPool
    +    ) -> Result<PooledFrameBitmap, VideoFrameBitmapError>;
     }
    Expand description

    A video frame which can produce a bitmap

    -

    Required Methods§

    source

    fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, +

    Required Methods§

    source

    fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, and is an expensive operation.

    -

    Implementors§

    \ No newline at end of file +
    source

    fn try_get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>

    Try and get a pooled bitmap using the given bitmap pool, and return Ok(None) if there are no pooled bitmaps available +and max pooled bitmaps exist

    +
    source

    fn get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<PooledFrameBitmap, VideoFrameBitmapError>

    Get a pooled bitmap, waiting for one to become available if max pooled bitmaps are checked out

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/trait.ZeroValue.html b/docs/macos_docs/crabgrab/feature/bitmap/trait.ZeroValue.html new file mode 100644 index 00000000..e5b428c6 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/trait.ZeroValue.html @@ -0,0 +1,4 @@ +ZeroValue in crabgrab::feature::bitmap - Rust

    Trait crabgrab::feature::bitmap::ZeroValue

    source ·
    pub trait ZeroValue {
    +    // Required method
    +    fn zero_value() -> Self;
    +}

    Required Methods§

    source

    fn zero_value() -> Self

    Object Safety§

    This trait is not object safe.

    Implementations on Foreign Types§

    source§

    impl ZeroValue for u8

    source§

    fn zero_value() -> Self

    source§

    impl ZeroValue for u32

    source§

    fn zero_value() -> Self

    source§

    impl ZeroValue for [u8; 2]

    source§

    fn zero_value() -> Self

    source§

    impl ZeroValue for [u8; 4]

    source§

    fn zero_value() -> Self

    source§

    impl ZeroValue for [f16; 4]

    source§

    fn zero_value() -> Self

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/type.BoxedSliceFrameBitmap.html b/docs/macos_docs/crabgrab/feature/bitmap/type.BoxedSliceFrameBitmap.html new file mode 100644 index 00000000..7b9455d9 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/type.BoxedSliceFrameBitmap.html @@ -0,0 +1,7 @@ +BoxedSliceFrameBitmap in crabgrab::feature::bitmap - Rust

    Type Alias crabgrab::feature::bitmap::BoxedSliceFrameBitmap

    source ·
    pub type BoxedSliceFrameBitmap = FrameBitmap<Box<[[u8; 4]]>, Box<[u32]>, Box<[[f16; 4]]>, Box<[u8]>, Box<[[u8; 2]]>>;
    Expand description

    A Bitmap with boxed-slice image data

    +

    Aliased Type§

    enum BoxedSliceFrameBitmap {
    +    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<Box<[[u8; 4]]>>),
    +    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<Box<[u32]>>),
    +    RgbaF16x4(FrameBitmapRgbaF16x4<Box<[[f16; 4]]>>),
    +    YCbCr(FrameBitmapYCbCr<Box<[u8]>, Box<[[u8; 2]]>>),
    +}

    Variants§

    §

    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<Box<[[u8; 4]]>>)

    §

    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<Box<[u32]>>)

    §

    RgbaF16x4(FrameBitmapRgbaF16x4<Box<[[f16; 4]]>>)

    §

    YCbCr(FrameBitmapYCbCr<Box<[u8]>, Box<[[u8; 2]]>>)

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/bitmap/type.PooledFrameBitmap.html b/docs/macos_docs/crabgrab/feature/bitmap/type.PooledFrameBitmap.html new file mode 100644 index 00000000..80535e33 --- /dev/null +++ b/docs/macos_docs/crabgrab/feature/bitmap/type.PooledFrameBitmap.html @@ -0,0 +1,7 @@ +PooledFrameBitmap in crabgrab::feature::bitmap - Rust

    Type Alias crabgrab::feature::bitmap::PooledFrameBitmap

    source ·
    pub type PooledFrameBitmap = FrameBitmap<PooledBitmap<[u8; 4]>, PooledBitmap<u32>, PooledBitmap<[f16; 4]>, PooledBitmap<u8>, PooledBitmap<[u8; 2]>>;
    Expand description

    A bitmap with booled images as bitmap data

    +

    Aliased Type§

    enum PooledFrameBitmap {
    +    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<PooledBitmap<[u8; 4]>>),
    +    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<PooledBitmap<u32>>),
    +    RgbaF16x4(FrameBitmapRgbaF16x4<PooledBitmap<[f16; 4]>>),
    +    YCbCr(FrameBitmapYCbCr<PooledBitmap<u8>, PooledBitmap<[u8; 2]>>),
    +}

    Variants§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/index.html b/docs/macos_docs/crabgrab/feature/index.html index 7d16220d..67d711fd 100644 --- a/docs/macos_docs/crabgrab/feature/index.html +++ b/docs/macos_docs/crabgrab/feature/index.html @@ -1,5 +1,4 @@ -crabgrab::feature - Rust -

    Module crabgrab::feature

    source ·
    Expand description

    Extension features

    +crabgrab::feature - Rust

    Module crabgrab::feature

    source ·
    Expand description

    Extension features

    Modules§

    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/iosurface/index.html b/docs/macos_docs/crabgrab/feature/iosurface/index.html index cc1ced46..02502b66 100644 --- a/docs/macos_docs/crabgrab/feature/iosurface/index.html +++ b/docs/macos_docs/crabgrab/feature/iosurface/index.html @@ -1,4 +1,3 @@ -crabgrab::feature::iosurface - Rust -

    Module crabgrab::feature::iosurface

    source ·
    Expand description

    Frame -> IOSurface conversion +crabgrab::feature::iosurface - Rust

    Module crabgrab::feature::iosurface

    source ·
    Expand description

    Frame -> IOSurface conversion (requires iosurface feature)

    Structs§

    Enums§

    • Represents an error when getting the IOSurface behind this video frame

    Traits§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/iosurface/struct.IoSurface.html b/docs/macos_docs/crabgrab/feature/iosurface/struct.IoSurface.html index d4ef46d7..b134e19c 100644 --- a/docs/macos_docs/crabgrab/feature/iosurface/struct.IoSurface.html +++ b/docs/macos_docs/crabgrab/feature/iosurface/struct.IoSurface.html @@ -1,16 +1,15 @@ -IoSurface in crabgrab::feature::iosurface - Rust -
    pub struct IoSurface(/* private fields */);
    Expand description

    A MacOS IOSurface instance

    -

    Implementations§

    source§

    impl IoSurface

    source

    pub fn get_raw(&self) -> *const c_void

    Gets the raw IOSurfaceRef

    -

    Trait Implementations§

    source§

    impl Clone for IoSurface

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Drop for IoSurface

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +IoSurface in crabgrab::feature::iosurface - Rust

    Struct crabgrab::feature::iosurface::IoSurface

    source ·
    pub struct IoSurface(/* private fields */);
    Expand description

    A MacOS IOSurface instance

    +

    Implementations§

    source§

    impl IoSurface

    source

    pub fn get_raw(&self) -> *const c_void

    Gets the raw IOSurfaceRef

    +

    Trait Implementations§

    source§

    impl Clone for IoSurface

    source§

    fn clone(&self) -> Self

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Drop for IoSurface

    source§

    fn drop(&mut self)

    Executes the destructor for this type. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/iosurface/trait.MacosIoSurfaceVideoFrameExt.html b/docs/macos_docs/crabgrab/feature/iosurface/trait.MacosIoSurfaceVideoFrameExt.html index dfe92ee7..ad23de04 100644 --- a/docs/macos_docs/crabgrab/feature/iosurface/trait.MacosIoSurfaceVideoFrameExt.html +++ b/docs/macos_docs/crabgrab/feature/iosurface/trait.MacosIoSurfaceVideoFrameExt.html @@ -1,7 +1,6 @@ -MacosIoSurfaceVideoFrameExt in crabgrab::feature::iosurface - Rust -
    pub trait MacosIoSurfaceVideoFrameExt {
    +MacosIoSurfaceVideoFrameExt in crabgrab::feature::iosurface - Rust
    pub trait MacosIoSurfaceVideoFrameExt {
         // Required method
    -    fn get_iosurface(&self) -> Result<IoSurface, GetIoSurfaceError>;
    +    fn get_iosurface(&self) -> Result<IoSurface, GetIoSurfaceError>;
     }
    Expand description

    A video frame which can inter-operate with any MacOS GPU API using IOSurfaces

    -

    Required Methods§

    source

    fn get_iosurface(&self) -> Result<IoSurface, GetIoSurfaceError>

    Get the IOSurface representing the video frame’s texture

    +

    Required Methods§

    source

    fn get_iosurface(&self) -> Result<IoSurface, GetIoSurfaceError>

    Get the IOSurface representing the video frame’s texture

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/metal/enum.MacosVideoFrameError.html b/docs/macos_docs/crabgrab/feature/metal/enum.MacosVideoFrameError.html index 5f761bb6..679cff92 100644 --- a/docs/macos_docs/crabgrab/feature/metal/enum.MacosVideoFrameError.html +++ b/docs/macos_docs/crabgrab/feature/metal/enum.MacosVideoFrameError.html @@ -1,24 +1,23 @@ -MacosVideoFrameError in crabgrab::feature::metal - Rust -
    pub enum MacosVideoFrameError {
    +MacosVideoFrameError in crabgrab::feature::metal - Rust

    Enum crabgrab::feature::metal::MacosVideoFrameError

    source ·
    pub enum MacosVideoFrameError {
         NoIoSurface,
         NoImageBuffer,
         InvalidVideoPlaneTexture,
    -    Other(String),
    +    Other(String),
     }
    Expand description

    Represents an error getting the texture from a video frame

    -

    Variants§

    §

    NoIoSurface

    §

    NoImageBuffer

    §

    InvalidVideoPlaneTexture

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for MacosVideoFrameError

    source§

    fn clone(&self) -> MacosVideoFrameError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacosVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MacosVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MacosVideoFrameError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    NoIoSurface

    §

    NoImageBuffer

    §

    InvalidVideoPlaneTexture

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for MacosVideoFrameError

    source§

    fn clone(&self) -> MacosVideoFrameError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacosVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for MacosVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for MacosVideoFrameError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/metal/enum.MetalVideoFramePlaneTexture.html b/docs/macos_docs/crabgrab/feature/metal/enum.MetalVideoFramePlaneTexture.html index a3441b46..db0f9a6d 100644 --- a/docs/macos_docs/crabgrab/feature/metal/enum.MetalVideoFramePlaneTexture.html +++ b/docs/macos_docs/crabgrab/feature/metal/enum.MetalVideoFramePlaneTexture.html @@ -1,5 +1,4 @@ -MetalVideoFramePlaneTexture in crabgrab::feature::metal - Rust -
    pub enum MetalVideoFramePlaneTexture {
    +MetalVideoFramePlaneTexture in crabgrab::feature::metal - Rust
    pub enum MetalVideoFramePlaneTexture {
         Rgba,
         Luminance,
         Chroma,
    @@ -7,25 +6,25 @@
     

    Variants§

    §

    Rgba

    The single RGBA plane for an RGBA format frame

    §

    Luminance

    The Luminance (Y, Brightness) plane for a YCbCr format frame

    §

    Chroma

    The Chrominance (CbCr, Blue/Red) plane for a YCbCr format frame

    -

    Trait Implementations§

    source§

    impl Clone for MetalVideoFramePlaneTexture

    source§

    fn clone(&self) -> MetalVideoFramePlaneTexture

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MetalVideoFramePlaneTexture

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for MetalVideoFramePlaneTexture

    source§

    fn eq(&self, other: &MetalVideoFramePlaneTexture) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for MetalVideoFramePlaneTexture

    source§

    impl Eq for MetalVideoFramePlaneTexture

    source§

    impl StructuralPartialEq for MetalVideoFramePlaneTexture

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for MetalVideoFramePlaneTexture

    source§

    fn clone(&self) -> MetalVideoFramePlaneTexture

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MetalVideoFramePlaneTexture

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for MetalVideoFramePlaneTexture

    source§

    fn eq(&self, other: &MetalVideoFramePlaneTexture) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for MetalVideoFramePlaneTexture

    source§

    impl Eq for MetalVideoFramePlaneTexture

    source§

    impl StructuralPartialEq for MetalVideoFramePlaneTexture

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/metal/index.html b/docs/macos_docs/crabgrab/feature/metal/index.html index 4b0da749..3c15a153 100644 --- a/docs/macos_docs/crabgrab/feature/metal/index.html +++ b/docs/macos_docs/crabgrab/feature/metal/index.html @@ -1,4 +1,3 @@ -crabgrab::feature::metal - Rust -

    Module crabgrab::feature::metal

    source ·
    Expand description

    Frame -> Metal Texture conversion +crabgrab::feature::metal - Rust

    Module crabgrab::feature::metal

    source ·
    Expand description

    Frame -> Metal Texture conversion (requires metal feature)

    Enums§

    Traits§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/metal/trait.MetalCaptureStreamExt.html b/docs/macos_docs/crabgrab/feature/metal/trait.MetalCaptureStreamExt.html index ae57f77c..e3b1e10c 100644 --- a/docs/macos_docs/crabgrab/feature/metal/trait.MetalCaptureStreamExt.html +++ b/docs/macos_docs/crabgrab/feature/metal/trait.MetalCaptureStreamExt.html @@ -1,5 +1,4 @@ -MetalCaptureStreamExt in crabgrab::feature::metal - Rust -
    pub trait MetalCaptureStreamExt {
    +MetalCaptureStreamExt in crabgrab::feature::metal - Rust

    Trait crabgrab::feature::metal::MetalCaptureStreamExt

    source ·
    pub trait MetalCaptureStreamExt {
         // Required method
         fn get_metal_device(&self) -> Device;
     }
    Expand description

    A capture stream which inter-operates with Metal

    diff --git a/docs/macos_docs/crabgrab/feature/metal/trait.MetalVideoFrameExt.html b/docs/macos_docs/crabgrab/feature/metal/trait.MetalVideoFrameExt.html index 9d0b9653..62c251e5 100644 --- a/docs/macos_docs/crabgrab/feature/metal/trait.MetalVideoFrameExt.html +++ b/docs/macos_docs/crabgrab/feature/metal/trait.MetalVideoFrameExt.html @@ -1,13 +1,12 @@ -MetalVideoFrameExt in crabgrab::feature::metal - Rust -
    pub trait MetalVideoFrameExt {
    +MetalVideoFrameExt in crabgrab::feature::metal - Rust

    Trait crabgrab::feature::metal::MetalVideoFrameExt

    source ·
    pub trait MetalVideoFrameExt {
         // Required method
         fn get_metal_texture(
             &self,
             plane: MetalVideoFramePlaneTexture
    -    ) -> Result<Texture, MacosVideoFrameError>;
    +    ) -> Result<Texture, MacosVideoFrameError>;
     }
    Expand description

    A video frame which can be used to create metal textures

    Required Methods§

    source

    fn get_metal_texture( &self, plane: MetalVideoFramePlaneTexture -) -> Result<Texture, MacosVideoFrameError>

    Get the texture for the given plane of the video frame

    +) -> Result<Texture, MacosVideoFrameError>

    Get the texture for the given plane of the video frame

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/screenshot/enum.ScreenshotError.html b/docs/macos_docs/crabgrab/feature/screenshot/enum.ScreenshotError.html index 1017045a..ad1deab9 100644 --- a/docs/macos_docs/crabgrab/feature/screenshot/enum.ScreenshotError.html +++ b/docs/macos_docs/crabgrab/feature/screenshot/enum.ScreenshotError.html @@ -1,20 +1,19 @@ -ScreenshotError in crabgrab::feature::screenshot - Rust -
    pub enum ScreenshotError {
    -    Other(String),
    +ScreenshotError in crabgrab::feature::screenshot - Rust

    Enum crabgrab::feature::screenshot::ScreenshotError

    source ·
    pub enum ScreenshotError {
    +    Other(String),
     }
    Expand description

    Represents an error while taking a screenshot

    -

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Debug for ScreenshotError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ScreenshotError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for ScreenshotError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for ScreenshotError

    source§

    impl Sync for ScreenshotError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Debug for ScreenshotError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for ScreenshotError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for ScreenshotError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for ScreenshotError

    source§

    impl Sync for ScreenshotError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/screenshot/fn.take_screenshot.html b/docs/macos_docs/crabgrab/feature/screenshot/fn.take_screenshot.html index 22257131..d88751c4 100644 --- a/docs/macos_docs/crabgrab/feature/screenshot/fn.take_screenshot.html +++ b/docs/macos_docs/crabgrab/feature/screenshot/fn.take_screenshot.html @@ -1,6 +1,5 @@ -take_screenshot in crabgrab::feature::screenshot - Rust -
    pub async fn take_screenshot(
    +take_screenshot in crabgrab::feature::screenshot - Rust

    Function crabgrab::feature::screenshot::take_screenshot

    source ·
    pub async fn take_screenshot(
         token: CaptureAccessToken,
         config: CaptureConfig
    -) -> Result<VideoFrame, ScreenshotError>
    Expand description

    Take a screenshot of the capturable content given a configuration

    +) -> Result<VideoFrame, ScreenshotError>
    Expand description

    Take a screenshot of the capturable content given a configuration

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/screenshot/index.html b/docs/macos_docs/crabgrab/feature/screenshot/index.html index e69030ae..f944173f 100644 --- a/docs/macos_docs/crabgrab/feature/screenshot/index.html +++ b/docs/macos_docs/crabgrab/feature/screenshot/index.html @@ -1,4 +1,3 @@ -crabgrab::feature::screenshot - Rust -
    Expand description

    Screenshot utility function +crabgrab::feature::screenshot - Rust

    Module crabgrab::feature::screenshot

    source ·
    Expand description

    Screenshot utility function (requires screenshot feature)

    Enums§

    Functions§

    • Take a screenshot of the capturable content given a configuration
    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFrameError.html b/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFrameError.html index 149b856e..a0562d73 100644 --- a/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFrameError.html +++ b/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFrameError.html @@ -1,27 +1,26 @@ -WgpuVideoFrameError in crabgrab::feature::wgpu - Rust -
    pub enum WgpuVideoFrameError {
    +WgpuVideoFrameError in crabgrab::feature::wgpu - Rust

    Enum crabgrab::feature::wgpu::WgpuVideoFrameError

    source ·
    pub enum WgpuVideoFrameError {
         NoBackendTexture,
         InvalidVideoPlaneTexture,
         NoWgpuDevice,
    -    Other(String),
    +    Other(String),
     }
    Expand description

    Represents an error getting the texture from a video frame

    Variants§

    §

    NoBackendTexture

    the backend texture couldn’t be fetched

    §

    InvalidVideoPlaneTexture

    The requested plane isn’t valid for this frame

    §

    NoWgpuDevice

    No Wgpu device was supplied to the capture stream

    -
    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for WgpuVideoFrameError

    source§

    fn clone(&self) -> WgpuVideoFrameError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WgpuVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for WgpuVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for WgpuVideoFrameError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +
    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for WgpuVideoFrameError

    source§

    fn clone(&self) -> WgpuVideoFrameError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WgpuVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for WgpuVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for WgpuVideoFrameError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where - T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T> ToString for T
    where + T: Display + ?Sized,

    source§

    default fn to_string(&self) -> String

    Converts the given value to a String. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFramePlaneTexture.html b/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFramePlaneTexture.html index 3eaafd70..760d6091 100644 --- a/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFramePlaneTexture.html +++ b/docs/macos_docs/crabgrab/feature/wgpu/enum.WgpuVideoFramePlaneTexture.html @@ -1,5 +1,4 @@ -WgpuVideoFramePlaneTexture in crabgrab::feature::wgpu - Rust -
    pub enum WgpuVideoFramePlaneTexture {
    +WgpuVideoFramePlaneTexture in crabgrab::feature::wgpu - Rust

    Enum crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture

    source ·
    pub enum WgpuVideoFramePlaneTexture {
         Rgba,
         Luminance,
         Chroma,
    @@ -7,25 +6,25 @@
     

    Variants§

    §

    Rgba

    The single RGBA plane for an RGBA format frame

    §

    Luminance

    The Luminance (Y, brightness) plane for a YCbCr format frame

    §

    Chroma

    The Chrominance (CbCr, Blue/Red) plane for a YCbCr format frame

    -

    Trait Implementations§

    source§

    impl Clone for WgpuVideoFramePlaneTexture

    source§

    fn clone(&self) -> WgpuVideoFramePlaneTexture

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WgpuVideoFramePlaneTexture

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for WgpuVideoFramePlaneTexture

    source§

    fn eq(&self, other: &WgpuVideoFramePlaneTexture) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for WgpuVideoFramePlaneTexture

    source§

    impl Eq for WgpuVideoFramePlaneTexture

    source§

    impl StructuralPartialEq for WgpuVideoFramePlaneTexture

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for WgpuVideoFramePlaneTexture

    source§

    fn clone(&self) -> WgpuVideoFramePlaneTexture

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WgpuVideoFramePlaneTexture

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for WgpuVideoFramePlaneTexture

    source§

    fn eq(&self, other: &WgpuVideoFramePlaneTexture) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for WgpuVideoFramePlaneTexture

    source§

    impl Eq for WgpuVideoFramePlaneTexture

    source§

    impl StructuralPartialEq for WgpuVideoFramePlaneTexture

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/wgpu/index.html b/docs/macos_docs/crabgrab/feature/wgpu/index.html index 01ae9717..b8a234b4 100644 --- a/docs/macos_docs/crabgrab/feature/wgpu/index.html +++ b/docs/macos_docs/crabgrab/feature/wgpu/index.html @@ -1,4 +1,3 @@ -crabgrab::feature::wgpu - Rust -

    Module crabgrab::feature::wgpu

    source ·
    Expand description

    Frame -> Wgpu Texture conversion +crabgrab::feature::wgpu - Rust

    Module crabgrab::feature::wgpu

    source ·
    Expand description

    Frame -> Wgpu Texture conversion (requires wgpu feature)

    Enums§

    Traits§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureConfigExt.html b/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureConfigExt.html index e44ead70..54c9b2d5 100644 --- a/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureConfigExt.html +++ b/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureConfigExt.html @@ -1,12 +1,11 @@ -WgpuCaptureConfigExt in crabgrab::feature::wgpu - Rust -
    pub trait WgpuCaptureConfigExt: Sized {
    +WgpuCaptureConfigExt in crabgrab::feature::wgpu - Rust

    Trait crabgrab::feature::wgpu::WgpuCaptureConfigExt

    source ·
    pub trait WgpuCaptureConfigExt: Sized {
         // Required method
         fn with_wgpu_device(
             self,
    -        device: Arc<dyn AsRef<Device> + Send + Sync + 'static>
    -    ) -> Result<Self, String>;
    +        device: Arc<dyn AsRef<Device> + Send + Sync + 'static>
    +    ) -> Result<Self, String>;
     }
    Expand description

    A capture config which can be supplied with a Wgpu device

    Required Methods§

    source

    fn with_wgpu_device( self, - device: Arc<dyn AsRef<Device> + Send + Sync + 'static> -) -> Result<Self, String>

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file + device: Arc<dyn AsRef<Device> + Send + Sync + 'static> +) -> Result<Self, String>

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureStreamExt.html b/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureStreamExt.html index 8561f441..e11326f9 100644 --- a/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureStreamExt.html +++ b/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuCaptureStreamExt.html @@ -1,13 +1,12 @@ -WgpuCaptureStreamExt in crabgrab::feature::wgpu - Rust -
    pub trait WgpuCaptureStreamExt {
    +WgpuCaptureStreamExt in crabgrab::feature::wgpu - Rust

    Trait crabgrab::feature::wgpu::WgpuCaptureStreamExt

    source ·
    pub trait WgpuCaptureStreamExt {
         // Required methods
         fn get_wgpu_device_wrapper(
             &self
    -    ) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>;
    -    fn get_wgpu_device(&self) -> Option<&Device>;
    +    ) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>;
    +    fn get_wgpu_device(&self) -> Option<&Device>;
     }
    Expand description

    A capture stream which may have had a Wgpu device instance supplied to it

    Required Methods§

    source

    fn get_wgpu_device_wrapper( &self -) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>

    Gets the Wgpu device wrapper supplied to CaptureConfig::with_wgpu_device(..)

    -
    source

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)

    +) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>

    Gets the Wgpu device wrapper supplied to CaptureConfig::with_wgpu_device(..)

    +
    source

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html b/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html index 7c85d133..deddf570 100644 --- a/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html +++ b/docs/macos_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html @@ -1,15 +1,14 @@ -WgpuVideoFrameExt in crabgrab::feature::wgpu - Rust -
    pub trait WgpuVideoFrameExt {
    +WgpuVideoFrameExt in crabgrab::feature::wgpu - Rust

    Trait crabgrab::feature::wgpu::WgpuVideoFrameExt

    source ·
    pub trait WgpuVideoFrameExt {
         // Required method
         fn get_wgpu_texture(
             &self,
             plane: WgpuVideoFramePlaneTexture,
    -        label: Option<&'static str>
    -    ) -> Result<Texture, WgpuVideoFrameError>;
    +        label: Option<&'static str>
    +    ) -> Result<Texture, WgpuVideoFrameError>;
     }
    Expand description

    A video frame which can be used to create Wgpu textures

    Required Methods§

    source

    fn get_wgpu_texture( &self, plane: WgpuVideoFramePlaneTexture, - label: Option<&'static str> -) -> Result<Texture, WgpuVideoFrameError>

    Get the texture for the given plane of the video frame

    + label: Option<&'static str> +) -> Result<Texture, WgpuVideoFrameError>

    Get the texture for the given plane of the video frame

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/enum.AudioBufferError.html b/docs/macos_docs/crabgrab/frame/enum.AudioBufferError.html index 8982e326..1e7bb2ba 100644 --- a/docs/macos_docs/crabgrab/frame/enum.AudioBufferError.html +++ b/docs/macos_docs/crabgrab/frame/enum.AudioBufferError.html @@ -1,21 +1,20 @@ -AudioBufferError in crabgrab::frame - Rust -
    pub enum AudioBufferError {
    +AudioBufferError in crabgrab::frame - Rust

    Enum crabgrab::frame::AudioBufferError

    source ·
    pub enum AudioBufferError {
         UnsupportedFormat,
         InvalidChannel,
    -    Other(String),
    +    Other(String),
     }
    Expand description

    Represents an error getting the data for an audio channel

    -

    Variants§

    §

    UnsupportedFormat

    §

    InvalidChannel

    §

    Other(String)

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    UnsupportedFormat

    §

    InvalidChannel

    §

    Other(String)

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/enum.AudioChannelCount.html b/docs/macos_docs/crabgrab/frame/enum.AudioChannelCount.html index 7840a6be..3b0a81e8 100644 --- a/docs/macos_docs/crabgrab/frame/enum.AudioChannelCount.html +++ b/docs/macos_docs/crabgrab/frame/enum.AudioChannelCount.html @@ -1,21 +1,20 @@ -AudioChannelCount in crabgrab::frame - Rust -
    pub enum AudioChannelCount {
    +AudioChannelCount in crabgrab::frame - Rust

    Enum crabgrab::frame::AudioChannelCount

    source ·
    pub enum AudioChannelCount {
         Mono,
         Stereo,
     }
    Expand description

    The number of audio channels to capture

    -

    Variants§

    §

    Mono

    §

    Stereo

    Trait Implementations§

    source§

    impl Clone for AudioChannelCount

    source§

    fn clone(&self) -> AudioChannelCount

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AudioChannelCount

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for AudioChannelCount

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Mono

    §

    Stereo

    Trait Implementations§

    source§

    impl Clone for AudioChannelCount

    source§

    fn clone(&self) -> AudioChannelCount

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AudioChannelCount

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for AudioChannelCount

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/enum.AudioChannelData.html b/docs/macos_docs/crabgrab/frame/enum.AudioChannelData.html index 4c5aa9d7..33c49ddf 100644 --- a/docs/macos_docs/crabgrab/frame/enum.AudioChannelData.html +++ b/docs/macos_docs/crabgrab/frame/enum.AudioChannelData.html @@ -1,18 +1,17 @@ -AudioChannelData in crabgrab::frame - Rust -
    pub enum AudioChannelData<'data> {
    -    F32(AudioChannelDataSamples<'data, f32>),
    -    I32(AudioChannelDataSamples<'data, i32>),
    -    I16(AudioChannelDataSamples<'data, i16>),
    +AudioChannelData in crabgrab::frame - Rust

    Enum crabgrab::frame::AudioChannelData

    source ·
    pub enum AudioChannelData<'data> {
    +    F32(AudioChannelDataSamples<'data, f32>),
    +    I32(AudioChannelDataSamples<'data, i32>),
    +    I16(AudioChannelDataSamples<'data, i16>),
     }
    Expand description

    Represents audio channel data in an audio frame

    -

    Variants§

    Auto Trait Implementations§

    §

    impl<'data> RefUnwindSafe for AudioChannelData<'data>

    §

    impl<'data> !Send for AudioChannelData<'data>

    §

    impl<'data> !Sync for AudioChannelData<'data>

    §

    impl<'data> Unpin for AudioChannelData<'data>

    §

    impl<'data> UnwindSafe for AudioChannelData<'data>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    Auto Trait Implementations§

    §

    impl<'data> Freeze for AudioChannelData<'data>

    §

    impl<'data> RefUnwindSafe for AudioChannelData<'data>

    §

    impl<'data> !Send for AudioChannelData<'data>

    §

    impl<'data> !Sync for AudioChannelData<'data>

    §

    impl<'data> Unpin for AudioChannelData<'data>

    §

    impl<'data> UnwindSafe for AudioChannelData<'data>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/enum.AudioSampleRate.html b/docs/macos_docs/crabgrab/frame/enum.AudioSampleRate.html index b1cc2fb4..cc0d9786 100644 --- a/docs/macos_docs/crabgrab/frame/enum.AudioSampleRate.html +++ b/docs/macos_docs/crabgrab/frame/enum.AudioSampleRate.html @@ -1,23 +1,22 @@ -AudioSampleRate in crabgrab::frame - Rust -
    pub enum AudioSampleRate {
    +AudioSampleRate in crabgrab::frame - Rust

    Enum crabgrab::frame::AudioSampleRate

    source ·
    pub enum AudioSampleRate {
         Hz8000,
         Hz16000,
         Hz24000,
         Hz48000,
     }
    Expand description

    The rate to capture audio samples

    -

    Variants§

    §

    Hz8000

    §

    Hz16000

    §

    Hz24000

    §

    Hz48000

    Trait Implementations§

    source§

    impl Clone for AudioSampleRate

    source§

    fn clone(&self) -> AudioSampleRate

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AudioSampleRate

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for AudioSampleRate

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    Hz8000

    §

    Hz16000

    §

    Hz24000

    §

    Hz48000

    Trait Implementations§

    source§

    impl Clone for AudioSampleRate

    source§

    fn clone(&self) -> AudioSampleRate

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for AudioSampleRate

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for AudioSampleRate

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/index.html b/docs/macos_docs/crabgrab/frame/index.html index 7110592e..cdf302fe 100644 --- a/docs/macos_docs/crabgrab/frame/index.html +++ b/docs/macos_docs/crabgrab/frame/index.html @@ -1,3 +1,2 @@ -crabgrab::frame - Rust -

    Module crabgrab::frame

    source ·
    Expand description

    Audio and video frames

    +crabgrab::frame - Rust

    Module crabgrab::frame

    source ·
    Expand description

    Audio and video frames

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/struct.AudioChannelDataSamples.html b/docs/macos_docs/crabgrab/frame/struct.AudioChannelDataSamples.html index 73d1999e..6d9a2e6d 100644 --- a/docs/macos_docs/crabgrab/frame/struct.AudioChannelDataSamples.html +++ b/docs/macos_docs/crabgrab/frame/struct.AudioChannelDataSamples.html @@ -1,18 +1,17 @@ -AudioChannelDataSamples in crabgrab::frame - Rust -
    pub struct AudioChannelDataSamples<'data, T> { /* private fields */ }
    Expand description

    Wraps a “slice” of audio data for one channel, handling data stride

    -

    Implementations§

    source§

    impl<T: Copy> AudioChannelDataSamples<'_, T>

    source

    pub fn get(&self, n: usize) -> T

    Get the nth sample for this channel data

    -
    source

    pub fn length(&self) -> usize

    Get the length of this sample buffer

    -

    Auto Trait Implementations§

    §

    impl<'data, T> RefUnwindSafe for AudioChannelDataSamples<'data, T>
    where - T: RefUnwindSafe,

    §

    impl<'data, T> !Send for AudioChannelDataSamples<'data, T>

    §

    impl<'data, T> !Sync for AudioChannelDataSamples<'data, T>

    §

    impl<'data, T> Unpin for AudioChannelDataSamples<'data, T>

    §

    impl<'data, T> UnwindSafe for AudioChannelDataSamples<'data, T>
    where - T: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +AudioChannelDataSamples in crabgrab::frame - Rust

    Struct crabgrab::frame::AudioChannelDataSamples

    source ·
    pub struct AudioChannelDataSamples<'data, T> { /* private fields */ }
    Expand description

    Wraps a “slice” of audio data for one channel, handling data stride

    +

    Implementations§

    source§

    impl<T: Copy> AudioChannelDataSamples<'_, T>

    source

    pub fn get(&self, n: usize) -> T

    Get the nth sample for this channel data

    +
    source

    pub fn length(&self) -> usize

    Get the length of this sample buffer

    +

    Auto Trait Implementations§

    §

    impl<'data, T> Freeze for AudioChannelDataSamples<'data, T>

    §

    impl<'data, T> RefUnwindSafe for AudioChannelDataSamples<'data, T>
    where + T: RefUnwindSafe,

    §

    impl<'data, T> !Send for AudioChannelDataSamples<'data, T>

    §

    impl<'data, T> !Sync for AudioChannelDataSamples<'data, T>

    §

    impl<'data, T> Unpin for AudioChannelDataSamples<'data, T>

    §

    impl<'data, T> UnwindSafe for AudioChannelDataSamples<'data, T>
    where + T: RefUnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    \ No newline at end of file +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/struct.AudioFrame.html b/docs/macos_docs/crabgrab/frame/struct.AudioFrame.html index 30a398b2..72ef1132 100644 --- a/docs/macos_docs/crabgrab/frame/struct.AudioFrame.html +++ b/docs/macos_docs/crabgrab/frame/struct.AudioFrame.html @@ -1,27 +1,26 @@ -AudioFrame in crabgrab::frame - Rust -

    Struct crabgrab::frame::AudioFrame

    source ·
    pub struct AudioFrame { /* private fields */ }
    Expand description

    A frame of captured audio

    +AudioFrame in crabgrab::frame - Rust

    Struct crabgrab::frame::AudioFrame

    source ·
    pub struct AudioFrame { /* private fields */ }
    Expand description

    A frame of captured audio

    Implementations§

    source§

    impl AudioFrame

    source

    pub fn sample_rate(&self) -> AudioSampleRate

    Get the sample rate of the captured audio

    source

    pub fn channel_count(&self) -> AudioChannelCount

    Get the channel count of the captured audio

    source

    pub fn audio_channel_buffer( &mut self, - channel: usize -) -> Result<AudioChannelData<'_>, AudioBufferError>

    Get the data buffer for the captured audio channel

    -
    source

    pub fn duration(&self) -> Duration

    Get the duration of this audio frames

    -
    source

    pub fn origin_time(&self) -> Duration

    Get the time since the start of the stream that this audio frame begins at

    -
    source

    pub fn frame_id(&self) -> u64

    Get the sequence id of this frame (monotonically increasing)

    + channel: usize +) -> Result<AudioChannelData<'_>, AudioBufferError>

    Get the data buffer for the captured audio channel

    +
    source

    pub fn duration(&self) -> Duration

    Get the duration of this audio frames

    +
    source

    pub fn origin_time(&self) -> Duration

    Get the time since the start of the stream that this audio frame begins at

    +
    source

    pub fn frame_id(&self) -> u64

    Get the sequence id of this frame (monotonically increasing)

    Note: This is separate from video frame ids

    -

    Trait Implementations§

    source§

    impl Debug for AudioFrame

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Send for AudioFrame

    source§

    impl Sync for AudioFrame

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Debug for AudioFrame

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Send for AudioFrame

    source§

    impl Sync for AudioFrame

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/frame/struct.VideoFrame.html b/docs/macos_docs/crabgrab/frame/struct.VideoFrame.html index e917a666..a060f9cc 100644 --- a/docs/macos_docs/crabgrab/frame/struct.VideoFrame.html +++ b/docs/macos_docs/crabgrab/frame/struct.VideoFrame.html @@ -1,33 +1,39 @@ -VideoFrame in crabgrab::frame - Rust -

    Struct crabgrab::frame::VideoFrame

    source ·
    pub struct VideoFrame { /* private fields */ }
    Expand description

    A frame of captured video

    -

    Implementations§

    source§

    impl VideoFrame

    source

    pub fn frame_id(&self) -> u64

    Get the sequence id of this video frame (monotonically increasing)

    +VideoFrame in crabgrab::frame - Rust

    Struct crabgrab::frame::VideoFrame

    source ·
    pub struct VideoFrame { /* private fields */ }
    Expand description

    A frame of captured video

    +

    Implementations§

    source§

    impl VideoFrame

    source

    pub fn frame_id(&self) -> u64

    Get the sequence id of this video frame (monotonically increasing)

    Note: This is separate from audio frame ids

    -
    source

    pub fn capture_time(&self) -> Instant

    Get the Instant that this frame was delivered to the application

    -
    source

    pub fn origin_time(&self) -> Duration

    Get the time since the start of the stream that this frame was generated

    +
    source

    pub fn capture_time(&self) -> Instant

    Get the Instant that this frame was delivered to the application

    +
    source

    pub fn origin_time(&self) -> Duration

    Get the time since the start of the stream that this frame was generated

    source

    pub fn size(&self) -> Size

    Get the raw size of the frame

    For planar image formats, this is the size of the largest plane

    -
    source

    pub fn dpi(&self) -> f64

    Get the dpi of the contents of the frame (accounting for capture scaling)

    +
    source

    pub fn dpi(&self) -> f64

    Get the dpi of the contents of the frame (accounting for capture scaling)

    source

    pub fn content_rect(&self) -> Rect

    Get the rectangle of the frame representing containing the captured contents

    -

    Trait Implementations§

    source§

    impl Debug for VideoFrame

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MacosIoSurfaceVideoFrameExt for VideoFrame

    source§

    fn get_iosurface(&self) -> Result<IoSurface, GetIoSurfaceError>

    Get the IOSurface representing the video frame’s texture
    source§

    impl MetalVideoFrameExt for VideoFrame

    Trait Implementations§

    source§

    impl Debug for VideoFrame

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl MacosIoSurfaceVideoFrameExt for VideoFrame

    source§

    fn get_iosurface(&self) -> Result<IoSurface, GetIoSurfaceError>

    Get the IOSurface representing the video frame’s texture
    source§

    impl MetalVideoFrameExt for VideoFrame

    source§

    fn get_metal_texture( &self, plane: MetalVideoFramePlaneTexture -) -> Result<Texture, MacosVideoFrameError>

    Get the texture for the given plane of the video frame
    source§

    impl VideoFrameBitmap for VideoFrame

    source§

    fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, -and is an expensive operation.
    source§

    impl WgpuVideoFrameExt for VideoFrame

    source§

    fn get_wgpu_texture( +) -> Result<Texture, MacosVideoFrameError>

    Get the texture for the given plane of the video frame
    source§

    impl VideoFrameBitmap for VideoFrame

    source§

    fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, +and is an expensive operation.
    source§

    fn get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<PooledFrameBitmap, VideoFrameBitmapError>

    Get a pooled bitmap, waiting for one to become available if max pooled bitmaps are checked out
    source§

    fn try_get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>

    Try and get a pooled bitmap using the given bitmap pool, and return Ok(None) if there are no pooled bitmaps available +and max pooled bitmaps exist
    source§

    impl WgpuVideoFrameExt for VideoFrame

    source§

    fn get_wgpu_texture( &self, plane: WgpuVideoFramePlaneTexture, - label: Option<&'static str> -) -> Result<Texture, WgpuVideoFrameError>

    Get the texture for the given plane of the video frame
    source§

    impl Send for VideoFrame

    source§

    impl Sync for VideoFrame

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    + label: Option<&'static str> +) -> Result<Texture, WgpuVideoFrameError>
    Get the texture for the given plane of the video frame
    source§

    impl Send for VideoFrame

    source§

    impl Sync for VideoFrame

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/index.html b/docs/macos_docs/crabgrab/index.html index 49c2a391..6db52485 100644 --- a/docs/macos_docs/crabgrab/index.html +++ b/docs/macos_docs/crabgrab/index.html @@ -1,6 +1,4 @@ -crabgrab - Rust -

    Crate crabgrab

    source ·
    Expand description

    A cross-platform screen/window/audio capture library

    +crabgrab - Rust

    Crate crabgrab

    source ·
    Expand description

    A cross-platform screen/window/audio capture library

    §MacOS Docs

    Since we depend on the metal crate, our docs won’t build for macos under docs.rs’s linux containers. As a workaround, you can see our build of the docs for MacOS here: MacOS Documentation

    diff --git a/docs/macos_docs/crabgrab/platform/index.html b/docs/macos_docs/crabgrab/platform/index.html index e49b2898..ad98616e 100644 --- a/docs/macos_docs/crabgrab/platform/index.html +++ b/docs/macos_docs/crabgrab/platform/index.html @@ -1,3 +1,2 @@ -crabgrab::platform - Rust -

    Module crabgrab::platform

    source ·
    Expand description

    Platform-specific extensions

    +crabgrab::platform - Rust

    Module crabgrab::platform

    source ·
    Expand description

    Platform-specific extensions

    Modules§

    • Macos-specific extensions
    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/platform/macos/enum.MacosCaptureResolutionType.html b/docs/macos_docs/crabgrab/platform/macos/enum.MacosCaptureResolutionType.html index 1a91e545..394a3ec7 100644 --- a/docs/macos_docs/crabgrab/platform/macos/enum.MacosCaptureResolutionType.html +++ b/docs/macos_docs/crabgrab/platform/macos/enum.MacosCaptureResolutionType.html @@ -1,5 +1,4 @@ -MacosCaptureResolutionType in crabgrab::platform::macos - Rust -
    pub enum MacosCaptureResolutionType {
    +MacosCaptureResolutionType in crabgrab::platform::macos - Rust
    pub enum MacosCaptureResolutionType {
         Automatic,
         Best,
         Nominal,
    @@ -8,25 +7,25 @@
     

    Variants§

    §

    Automatic

    Automatically select the resolution type

    §

    Best

    Select the highest available capture resolution (usually the physical resolution being rendered)

    §

    Nominal

    One linear screen unit per pixel, IE the “virtual resolution”

    -

    Trait Implementations§

    source§

    impl Clone for MacosCaptureResolutionType

    source§

    fn clone(&self) -> MacosCaptureResolutionType

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacosCaptureResolutionType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for MacosCaptureResolutionType

    source§

    fn eq(&self, other: &MacosCaptureResolutionType) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for MacosCaptureResolutionType

    source§

    impl Eq for MacosCaptureResolutionType

    source§

    impl StructuralPartialEq for MacosCaptureResolutionType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Trait Implementations§

    source§

    impl Clone for MacosCaptureResolutionType

    source§

    fn clone(&self) -> MacosCaptureResolutionType

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacosCaptureResolutionType

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl PartialEq for MacosCaptureResolutionType

    source§

    fn eq(&self, other: &MacosCaptureResolutionType) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl Copy for MacosCaptureResolutionType

    source§

    impl Eq for MacosCaptureResolutionType

    source§

    impl StructuralPartialEq for MacosCaptureResolutionType

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/platform/macos/enum.MacosWindowLevel.html b/docs/macos_docs/crabgrab/platform/macos/enum.MacosWindowLevel.html index 527449c6..3a513366 100644 --- a/docs/macos_docs/crabgrab/platform/macos/enum.MacosWindowLevel.html +++ b/docs/macos_docs/crabgrab/platform/macos/enum.MacosWindowLevel.html @@ -1,5 +1,4 @@ -MacosWindowLevel in crabgrab::platform::macos - Rust -
    pub enum MacosWindowLevel {
    +MacosWindowLevel in crabgrab::platform::macos - Rust

    Enum crabgrab::platform::macos::MacosWindowLevel

    source ·
    pub enum MacosWindowLevel {
     
    Show 19 variants BelowDesktop = 0, Desktop = 1, DesktopIcon = 2, @@ -21,32 +20,32 @@ AssistiveTechHigh = 18,
    }
    Expand description

    Mac OS “window level” Represents the “window level” of a native Mac OS window. Windows within the same level are ordered above or below levels that are above below or above this level respectively.

    -

    Variants§

    §

    BelowDesktop = 0

    §

    Desktop = 1

    §

    DesktopIcon = 2

    §

    Backstop = 3

    §

    Normal = 4

    §

    Floating = 5

    §

    TornOffMenu = 6

    §

    Dock = 7

    §

    MainMenu = 8

    §

    Status = 9

    §

    ModalPanel = 10

    §

    PopupMenu = 11

    §

    Dragging = 12

    §

    ScreenSaver = 13

    §

    Overlay = 14

    §

    Help = 15

    §

    Utility = 16

    §

    Cursor = 17

    §

    AssistiveTechHigh = 18

    Trait Implementations§

    source§

    impl Clone for MacosWindowLevel

    source§

    fn clone(&self) -> MacosWindowLevel

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacosWindowLevel

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for MacosWindowLevel

    source§

    fn cmp(&self, other: &MacosWindowLevel) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where - Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where - Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for MacosWindowLevel

    source§

    fn eq(&self, other: &MacosWindowLevel) -> bool

    This method tests for self and other values to be equal, and is used -by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for MacosWindowLevel

    source§

    fn partial_cmp(&self, other: &MacosWindowLevel) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= -operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= -operator. Read more
    source§

    impl Copy for MacosWindowLevel

    source§

    impl Eq for MacosWindowLevel

    source§

    impl StructuralPartialEq for MacosWindowLevel

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Comparable<K> for Q
    where - Q: Ord + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn compare(&self, key: &K) -> Ordering

    Compare self to key and return their ordering.
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where - Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Variants§

    §

    BelowDesktop = 0

    §

    Desktop = 1

    §

    DesktopIcon = 2

    §

    Backstop = 3

    §

    Normal = 4

    §

    Floating = 5

    §

    TornOffMenu = 6

    §

    Dock = 7

    §

    MainMenu = 8

    §

    Status = 9

    §

    ModalPanel = 10

    §

    PopupMenu = 11

    §

    Dragging = 12

    §

    ScreenSaver = 13

    §

    Overlay = 14

    §

    Help = 15

    §

    Utility = 16

    §

    Cursor = 17

    §

    AssistiveTechHigh = 18

    Trait Implementations§

    source§

    impl Clone for MacosWindowLevel

    source§

    fn clone(&self) -> MacosWindowLevel

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for MacosWindowLevel

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Ord for MacosWindowLevel

    source§

    fn cmp(&self, other: &MacosWindowLevel) -> Ordering

    This method returns an Ordering between self and other. Read more
    1.21.0 · source§

    fn max(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the maximum of two values. Read more
    1.21.0 · source§

    fn min(self, other: Self) -> Self
    where + Self: Sized,

    Compares and returns the minimum of two values. Read more
    1.50.0 · source§

    fn clamp(self, min: Self, max: Self) -> Self
    where + Self: Sized + PartialOrd,

    Restrict a value to a certain interval. Read more
    source§

    impl PartialEq for MacosWindowLevel

    source§

    fn eq(&self, other: &MacosWindowLevel) -> bool

    This method tests for self and other values to be equal, and is used +by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always +sufficient, and should not be overridden without very good reason.
    source§

    impl PartialOrd for MacosWindowLevel

    source§

    fn partial_cmp(&self, other: &MacosWindowLevel) -> Option<Ordering>

    This method returns an ordering between self and other values if one exists. Read more
    1.0.0 · source§

    fn lt(&self, other: &Rhs) -> bool

    This method tests less than (for self and other) and is used by the < operator. Read more
    1.0.0 · source§

    fn le(&self, other: &Rhs) -> bool

    This method tests less than or equal to (for self and other) and is used by the <= +operator. Read more
    1.0.0 · source§

    fn gt(&self, other: &Rhs) -> bool

    This method tests greater than (for self and other) and is used by the > operator. Read more
    1.0.0 · source§

    fn ge(&self, other: &Rhs) -> bool

    This method tests greater than or equal to (for self and other) and is used by the >= +operator. Read more
    source§

    impl Copy for MacosWindowLevel

    source§

    impl Eq for MacosWindowLevel

    source§

    impl StructuralPartialEq for MacosWindowLevel

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    §

    impl<Q, K> Comparable<K> for Q
    where + Q: Ord + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn compare(&self, key: &K) -> Ordering

    Compare self to key and return their ordering.
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Checks if this value is equivalent to the given key. Read more
    §

    impl<Q, K> Equivalent<K> for Q
    where + Q: Eq + ?Sized, + K: Borrow<Q> + ?Sized,

    §

    fn equivalent(&self, key: &K) -> bool

    Compare self to key and return true if they are equal.
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/platform/macos/index.html b/docs/macos_docs/crabgrab/platform/macos/index.html index d973810b..ad23a2c2 100644 --- a/docs/macos_docs/crabgrab/platform/macos/index.html +++ b/docs/macos_docs/crabgrab/platform/macos/index.html @@ -1,5 +1,4 @@ -crabgrab::platform::macos - Rust -

    Module crabgrab::platform::macos

    source ·
    Expand description

    Macos-specific extensions

    +crabgrab::platform::macos - Rust

    Module crabgrab::platform::macos

    source ·
    Expand description

    Macos-specific extensions

    Enums§

    • Mac OS “resolution type” The “resolution type” of the capture
    • Mac OS “window level” Represents the “window level” of a native Mac OS window. Windows within the same level are ordered above or below levels that are above below or above this level respectively.

    Traits§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableContentFilterExt.html b/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableContentFilterExt.html index 77e7ff8b..848f14df 100644 --- a/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableContentFilterExt.html +++ b/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableContentFilterExt.html @@ -1,20 +1,19 @@ -MacosCapturableContentFilterExt in crabgrab::platform::macos - Rust -
    pub trait MacosCapturableContentFilterExt: Sized {
    +MacosCapturableContentFilterExt in crabgrab::platform::macos - Rust
    pub trait MacosCapturableContentFilterExt: Sized {
         // Required methods
         fn with_window_level_range(
             self,
    -        min: Option<MacosWindowLevel>,
    -        max: Option<MacosWindowLevel>
    -    ) -> Result<Self, CapturableContentError>;
    -    fn with_exclude_bundle_ids(self, bundle_id: &[&str]) -> Self;
    -    fn with_exclude_window_ids(self, window_ids: &[u32]) -> Self;
    +        min: Option<MacosWindowLevel>,
    +        max: Option<MacosWindowLevel>
    +    ) -> Result<Self, CapturableContentError>;
    +    fn with_exclude_bundle_ids(self, bundle_id: &[&str]) -> Self;
    +    fn with_exclude_window_ids(self, window_ids: &[u32]) -> Self;
     }
    Expand description

    Mac OS specific extensions for capture content filters A capturable content filter with Mac OS specific options

    Required Methods§

    source

    fn with_window_level_range( self, - min: Option<MacosWindowLevel>, - max: Option<MacosWindowLevel> -) -> Result<Self, CapturableContentError>

    Set the range of “window levels” to filter to (inclusive)

    -
    source

    fn with_exclude_bundle_ids(self, bundle_id: &[&str]) -> Self

    Exclude windows who’s applications have the provided bundle ids

    -
    source

    fn with_exclude_window_ids(self, window_ids: &[u32]) -> Self

    Exclude windows with the given CGWindowIDs

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file + min: Option<MacosWindowLevel>, + max: Option<MacosWindowLevel> +) -> Result<Self, CapturableContentError>

    Set the range of “window levels” to filter to (inclusive)

    +
    source

    fn with_exclude_bundle_ids(self, bundle_id: &[&str]) -> Self

    Exclude windows who’s applications have the provided bundle ids

    +
    source

    fn with_exclude_window_ids(self, window_ids: &[u32]) -> Self

    Exclude windows with the given CGWindowIDs

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableWindowExt.html b/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableWindowExt.html index 58ca21fc..776feb8f 100644 --- a/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableWindowExt.html +++ b/docs/macos_docs/crabgrab/platform/macos/trait.MacosCapturableWindowExt.html @@ -1,21 +1,20 @@ -MacosCapturableWindowExt in crabgrab::platform::macos - Rust -
    pub trait MacosCapturableWindowExt {
    +MacosCapturableWindowExt in crabgrab::platform::macos - Rust

    Trait crabgrab::platform::macos::MacosCapturableWindowExt

    source ·
    pub trait MacosCapturableWindowExt {
         // Required methods
    -    fn get_window_layer(&self) -> Result<i32, CapturableContentError>;
    +    fn get_window_layer(&self) -> Result<i32, CapturableContentError>;
         fn get_window_level(
             &self
    -    ) -> Result<MacosWindowLevel, CapturableContentError>;
    -    fn get_window_id(&self) -> u32;
    +    ) -> Result<MacosWindowLevel, CapturableContentError>;
    +    fn get_window_id(&self) -> u32;
         fn from_window_id(
    -        window_id: u32
    -    ) -> impl Future<Output = Result<CapturableWindow, CapturableContentError>>;
    +        window_id: u32
    +    ) -> impl Future<Output = Result<CapturableWindow, CapturableContentError>>;
     }
    Expand description

    Mac OS specific extensions for capturable windows A capturable window with mac-os specific features

    -

    Required Methods§

    source

    fn get_window_layer(&self) -> Result<i32, CapturableContentError>

    Get the window layer of this window

    -
    source

    fn get_window_level(&self) -> Result<MacosWindowLevel, CapturableContentError>

    Get the window level of this window

    -
    source

    fn get_window_id(&self) -> u32

    Get the native window id for this capturable window. +

    Required Methods§

    source

    fn get_window_layer(&self) -> Result<i32, CapturableContentError>

    Get the window layer of this window

    +
    source

    fn get_window_level(&self) -> Result<MacosWindowLevel, CapturableContentError>

    Get the window level of this window

    +
    source

    fn get_window_id(&self) -> u32

    Get the native window id for this capturable window. This is the CGWindowID for this window.

    source

    fn from_window_id( - window_id: u32 -) -> impl Future<Output = Result<CapturableWindow, CapturableContentError>>

    Try and convert the given CGWindowID to a capturable window.

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file + window_id: u32 +) -> impl Future<Output = Result<CapturableWindow, CapturableContentError>>

    Try and convert the given CGWindowID to a capturable window.

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/platform/macos/trait.MacosCaptureConfigExt.html b/docs/macos_docs/crabgrab/platform/macos/trait.MacosCaptureConfigExt.html index 99958c79..8bd4b2b9 100644 --- a/docs/macos_docs/crabgrab/platform/macos/trait.MacosCaptureConfigExt.html +++ b/docs/macos_docs/crabgrab/platform/macos/trait.MacosCaptureConfigExt.html @@ -1,19 +1,18 @@ -MacosCaptureConfigExt in crabgrab::platform::macos - Rust -
    pub trait MacosCaptureConfigExt {
    +MacosCaptureConfigExt in crabgrab::platform::macos - Rust

    Trait crabgrab::platform::macos::MacosCaptureConfigExt

    source ·
    pub trait MacosCaptureConfigExt {
         // Required methods
    -    fn with_scale_to_fit(self, scale_to_fit: bool) -> Self;
    -    fn with_maximum_fps(self, maximum_fps: Option<f32>) -> Self;
    +    fn with_scale_to_fit(self, scale_to_fit: bool) -> Self;
    +    fn with_maximum_fps(self, maximum_fps: Option<f32>) -> Self;
         fn with_metal_device(self, metal_device: Device) -> Self;
         fn with_resolution_type(
             self,
             resolution_type: MacosCaptureResolutionType
         ) -> Self;
     }
    Expand description

    Mac OS specific extensions for capture configs

    -

    Required Methods§

    source

    fn with_scale_to_fit(self, scale_to_fit: bool) -> Self

    Set whether or not to scale content to the output size

    -
    source

    fn with_maximum_fps(self, maximum_fps: Option<f32>) -> Self

    Set the maximum capture frame-rate

    +

    Required Methods§

    source

    fn with_scale_to_fit(self, scale_to_fit: bool) -> Self

    Set whether or not to scale content to the output size

    +
    source

    fn with_maximum_fps(self, maximum_fps: Option<f32>) -> Self

    Set the maximum capture frame-rate

    source

    fn with_metal_device(self, metal_device: Device) -> Self

    Set the metal device to use for texture creation

    source

    fn with_resolution_type( self, resolution_type: MacosCaptureResolutionType ) -> Self

    Set the resolution type of the capture. Does nothing on macos before OS 14.0

    -

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/prelude/index.html b/docs/macos_docs/crabgrab/prelude/index.html index 2dd3c4d6..6cf6ec55 100644 --- a/docs/macos_docs/crabgrab/prelude/index.html +++ b/docs/macos_docs/crabgrab/prelude/index.html @@ -1,3 +1,2 @@ -crabgrab::prelude - Rust -

    Module crabgrab::prelude

    source ·
    Expand description

    Everything

    +crabgrab::prelude - Rust

    Module crabgrab::prelude

    source ·
    Expand description

    Everything

    Re-exports§

    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/util/index.html b/docs/macos_docs/crabgrab/util/index.html index 8fb93ca1..e16331ce 100644 --- a/docs/macos_docs/crabgrab/util/index.html +++ b/docs/macos_docs/crabgrab/util/index.html @@ -1,3 +1,2 @@ -crabgrab::util - Rust -

    Module crabgrab::util

    source ·
    Expand description

    Geometry types

    +crabgrab::util - Rust

    Module crabgrab::util

    source ·
    Expand description

    Geometry types

    Structs§

    • Represents a 2D point
    • Represents an axis-aligned rectangle
    • Represents a 2D size
    \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/util/struct.Point.html b/docs/macos_docs/crabgrab/util/struct.Point.html index fcef1f38..fd87ab3f 100644 --- a/docs/macos_docs/crabgrab/util/struct.Point.html +++ b/docs/macos_docs/crabgrab/util/struct.Point.html @@ -1,24 +1,23 @@ -Point in crabgrab::util - Rust -

    Struct crabgrab::util::Point

    source ·
    pub struct Point {
    -    pub x: f64,
    -    pub y: f64,
    +Point in crabgrab::util - Rust

    Struct crabgrab::util::Point

    source ·
    pub struct Point {
    +    pub x: f64,
    +    pub y: f64,
     }
    Expand description

    Represents a 2D point

    -

    Fields§

    §x: f64§y: f64

    Implementations§

    source§

    impl Point

    source

    pub const ZERO: Point = _

    The point at (0, 0)

    -
    source

    pub fn scaled(&self, scale: f64) -> Self

    Scale the point uniformly by some value

    -
    source

    pub fn scaled_2d(&self, scale: (f64, f64)) -> Self

    Scale the point non-uniformly in x and y

    -

    Trait Implementations§

    source§

    impl Clone for Point

    source§

    fn clone(&self) -> Point

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Point

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Point

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Point

    §

    impl Send for Point

    §

    impl Sync for Point

    §

    impl Unpin for Point

    §

    impl UnwindSafe for Point

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §x: f64§y: f64

    Implementations§

    source§

    impl Point

    source

    pub const ZERO: Point = _

    The point at (0, 0)

    +
    source

    pub fn scaled(&self, scale: f64) -> Self

    Scale the point uniformly by some value

    +
    source

    pub fn scaled_2d(&self, scale: (f64, f64)) -> Self

    Scale the point non-uniformly in x and y

    +

    Trait Implementations§

    source§

    impl Clone for Point

    source§

    fn clone(&self) -> Point

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Point

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Point

    Auto Trait Implementations§

    §

    impl Freeze for Point

    §

    impl RefUnwindSafe for Point

    §

    impl Send for Point

    §

    impl Sync for Point

    §

    impl Unpin for Point

    §

    impl UnwindSafe for Point

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/util/struct.Rect.html b/docs/macos_docs/crabgrab/util/struct.Rect.html index 537e1608..727c9893 100644 --- a/docs/macos_docs/crabgrab/util/struct.Rect.html +++ b/docs/macos_docs/crabgrab/util/struct.Rect.html @@ -1,23 +1,22 @@ -Rect in crabgrab::util - Rust -

    Struct crabgrab::util::Rect

    source ·
    pub struct Rect {
    +Rect in crabgrab::util - Rust

    Struct crabgrab::util::Rect

    source ·
    pub struct Rect {
         pub origin: Point,
         pub size: Size,
     }
    Expand description

    Represents an axis-aligned rectangle

    -

    Fields§

    §origin: Point§size: Size

    Implementations§

    source§

    impl Rect

    source

    pub fn scaled(&self, scale: f64) -> Self

    Scale the rectangle uniformly

    -
    source

    pub fn scaled_2d(&self, scale: (f64, f64)) -> Self

    Scale the rectangle non-uniformly in x and y

    -

    Trait Implementations§

    source§

    impl Clone for Rect

    source§

    fn clone(&self) -> Rect

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Rect

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Rect

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Rect

    §

    impl Send for Rect

    §

    impl Sync for Rect

    §

    impl Unpin for Rect

    §

    impl UnwindSafe for Rect

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §origin: Point§size: Size

    Implementations§

    source§

    impl Rect

    source

    pub fn scaled(&self, scale: f64) -> Self

    Scale the rectangle uniformly

    +
    source

    pub fn scaled_2d(&self, scale: (f64, f64)) -> Self

    Scale the rectangle non-uniformly in x and y

    +

    Trait Implementations§

    source§

    impl Clone for Rect

    source§

    fn clone(&self) -> Rect

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Rect

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Rect

    Auto Trait Implementations§

    §

    impl Freeze for Rect

    §

    impl RefUnwindSafe for Rect

    §

    impl Send for Rect

    §

    impl Sync for Rect

    §

    impl Unpin for Rect

    §

    impl UnwindSafe for Rect

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/crabgrab/util/struct.Size.html b/docs/macos_docs/crabgrab/util/struct.Size.html index 1127b2c0..7dc645ef 100644 --- a/docs/macos_docs/crabgrab/util/struct.Size.html +++ b/docs/macos_docs/crabgrab/util/struct.Size.html @@ -1,23 +1,22 @@ -Size in crabgrab::util - Rust -

    Struct crabgrab::util::Size

    source ·
    pub struct Size {
    -    pub width: f64,
    -    pub height: f64,
    +Size in crabgrab::util - Rust

    Struct crabgrab::util::Size

    source ·
    pub struct Size {
    +    pub width: f64,
    +    pub height: f64,
     }
    Expand description

    Represents a 2D size

    -

    Fields§

    §width: f64§height: f64

    Implementations§

    source§

    impl Size

    source

    pub fn scaled(&self, scale: f64) -> Self

    scale the size uniformly by some value

    -
    source

    pub fn scaled_2d(&self, scale: (f64, f64)) -> Self

    scale the size non-uniformly in x and y

    -

    Trait Implementations§

    source§

    impl Clone for Size

    source§

    fn clone(&self) -> Size

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Size

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Size

    Auto Trait Implementations§

    §

    impl RefUnwindSafe for Size

    §

    impl Send for Size

    §

    impl Sync for Size

    §

    impl Unpin for Size

    §

    impl UnwindSafe for Size

    Blanket Implementations§

    source§

    impl<T> Any for T
    where - T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where - T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where - T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    -
    source§

    impl<T, U> Into<U> for T
    where - U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    Fields§

    §width: f64§height: f64

    Implementations§

    source§

    impl Size

    source

    pub fn scaled(&self, scale: f64) -> Self

    scale the size uniformly by some value

    +
    source

    pub fn scaled_2d(&self, scale: (f64, f64)) -> Self

    scale the size non-uniformly in x and y

    +

    Trait Implementations§

    source§

    impl Clone for Size

    source§

    fn clone(&self) -> Size

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for Size

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Copy for Size

    Auto Trait Implementations§

    §

    impl Freeze for Size

    §

    impl RefUnwindSafe for Size

    §

    impl Send for Size

    §

    impl Sync for Size

    §

    impl Unpin for Size

    §

    impl UnwindSafe for Size

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    That is, this conversion is whatever the implementation of -From<T> for U chooses to do.

    -
    source§

    impl<T> ToOwned for T
    where - T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where - U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where - U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where - T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where - T: Send,

    §

    impl<T> WasmNotSendSync for T
    where +From<T> for U chooses to do.

    +

    source§

    impl<T> ToOwned for T
    where + T: Clone,

    §

    type Owned = T

    The resulting type after obtaining ownership.
    source§

    fn to_owned(&self) -> T

    Creates owned data from borrowed data, usually by cloning. Read more
    source§

    fn clone_into(&self, target: &mut T)

    Uses borrowed data to replace owned data, usually by cloning. Read more
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> AutoreleaseSafe for T
    where + T: ?Sized,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where - T: Sync,

    \ No newline at end of file + T: Sync, \ No newline at end of file diff --git a/docs/macos_docs/help.html b/docs/macos_docs/help.html index c2750a0b..ea8a4d42 100644 --- a/docs/macos_docs/help.html +++ b/docs/macos_docs/help.html @@ -1,2 +1 @@ -Help -

    Rustdoc help

    Back
    \ No newline at end of file +Help

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/docs/macos_docs/search-index.js b/docs/macos_docs/search-index.js index 853e4926..c96cd5aa 100644 --- a/docs/macos_docs/search-index.js +++ b/docs/macos_docs/search-index.js @@ -1,5 +1,5 @@ var searchIndex = new Map(JSON.parse('[\ -["crabgrab",{"doc":"A cross-platform screen/window/audio capture library","t":"CCCCCCCTFFGFFFFFFTTTTPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPFPFFGGFPPPPPPPGGGGPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCCCPGFFFFPPPPPKGGPNNNNNNNNNNNNNNNOOONNOOONNNNNNNNNNMOOONNNNNNNOOOONNNNNNNNNNNNNNNNNNNNNNNNOOOGFKPPNNNNNNNNNNNNNMNNNNNNNNNNNNPPPGKKGPPPPNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNPGNNNNNNNNNHNNNNPPPPPPPKKGKGNNNNNNNNNNNNNNNNNNNMMMNNNNNNNNNNNNMGGGFFGPPPPPPPPPPPPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCPPPPPPPPPPPPKKKKGGPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNMMMMNNNMNNNNNNNNMMMMMMMFFFTNNNNNNNNNNNNNNNNNNONNNONNNNNNONNNNNNNNNNNNOOO","n":["capturable_content","capture_stream","feature","frame","platform","prelude","util","ALL_WINDOWS","CapturableApplication","CapturableContent","CapturableContentError","CapturableContentFilter","CapturableDisplay","CapturableDisplayIterator","CapturableWindow","CapturableWindowFilter","CapturableWindowIterator","DISPLAYS","EVERYTHING","EVERYTHING_NORMAL","NORMAL_WINDOWS","Other","application","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","default","description","desktop_windows","displays","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_window_id","get_window_id","get_window_layer","get_window_level","hash","identifier","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_visible","len","name","new","new","next","next","onscreen_only","pid","rect","rect","size_hint","size_hint","source","title","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","windows","with_exclude_bundle_ids","with_exclude_window_ids","with_window_level_range","AlreadyStopped","Argb2101010","Audio","AudioCaptureConfig","Bgra8888","CaptureAccessToken","CaptureConfig","CaptureConfigError","CapturePixelFormat","CaptureStream","End","F420","Idle","InvalidBufferCount","Other","Other","Other","StreamCreateError","StreamError","StreamEvent","StreamStopError","UnauthorizedFeature","UnsupportedPixelFormat","UnsupportedPixelFormat","V420","Video","allows_borderless","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","cause","cause","cause","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","description","description","description","description","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","get_metal_device","get_wgpu_device","get_wgpu_device_wrapper","into","into","into","into","into","into","into","into","into","into","new","new","request_access","set_exclude_current_process_audio","source","source","source","source","stop","supported_pixel_formats","test_access","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","with_buffer_count","with_display","with_maximum_fps","with_metal_device","with_output_size","with_resolution_type","with_scale_to_fit","with_show_cursor","with_wgpu_device","with_window","bitmap","iosurface","metal","screenshot","wgpu","BgraUnorm8x4","FrameBitmap","FrameBitmapBgraUnorm8x4","FrameBitmapRgbaF16x4","FrameBitmapRgbaUnormPacked1010102","FrameBitmapYCbCr","Full","Other","RgbaF16x4","RgbaUnormPacked1010102","Video","VideoFrameBitmap","VideoFrameBitmapError","VideoRange","YCbCr","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","chroma_data","chroma_height","chroma_width","clone","clone_into","data","data","data","description","fmt","fmt","from","from","from","from","from","from","from","get_bitmap","height","height","height","into","into","into","into","into","into","into","luma_data","luma_height","luma_width","range","source","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","width","width","width","GetIoSurfaceError","IoSurface","MacosIoSurfaceVideoFrameExt","NoImageBuffer","NoIoSurface","borrow","borrow","borrow_mut","borrow_mut","cause","clone","clone_into","description","drop","fmt","fmt","from","from","get_iosurface","get_raw","into","into","source","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","Chroma","InvalidVideoPlaneTexture","Luminance","MacosVideoFrameError","MetalCaptureStreamExt","MetalVideoFrameExt","MetalVideoFramePlaneTexture","NoImageBuffer","NoIoSurface","Other","Rgba","borrow","borrow","borrow_mut","borrow_mut","cause","clone","clone","clone_into","clone_into","description","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","get_metal_device","get_metal_texture","into","into","source","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","Other","ScreenshotError","borrow","borrow_mut","cause","description","fmt","fmt","from","into","source","take_screenshot","to_string","try_from","try_into","type_id","Chroma","InvalidVideoPlaneTexture","Luminance","NoBackendTexture","NoWgpuDevice","Other","Rgba","WgpuCaptureConfigExt","WgpuCaptureStreamExt","WgpuVideoFrameError","WgpuVideoFrameExt","WgpuVideoFramePlaneTexture","borrow","borrow","borrow_mut","borrow_mut","cause","clone","clone","clone_into","clone_into","description","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","get_wgpu_device","get_wgpu_device_wrapper","get_wgpu_texture","into","into","source","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","with_wgpu_device","AudioBufferError","AudioChannelCount","AudioChannelData","AudioChannelDataSamples","AudioFrame","AudioSampleRate","F32","Hz16000","Hz24000","Hz48000","Hz8000","I16","I32","InvalidChannel","Mono","Other","Stereo","UnsupportedFormat","VideoFrame","audio_channel_buffer","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capture_time","channel_count","clone","clone","clone_into","clone_into","content_rect","dpi","duration","fmt","fmt","fmt","fmt","frame_id","frame_id","from","from","from","from","from","from","from","get","get_bitmap","get_iosurface","get_metal_texture","get_wgpu_texture","into","into","into","into","into","into","into","length","origin_time","origin_time","sample_rate","size","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","macos","AssistiveTechHigh","Automatic","Backstop","BelowDesktop","Best","Cursor","Desktop","DesktopIcon","Dock","Dragging","Floating","Help","MacosAudioCaptureConfigExt","MacosCapturableContentFilterExt","MacosCapturableWindowExt","MacosCaptureConfigExt","MacosCaptureResolutionType","MacosWindowLevel","MainMenu","ModalPanel","Nominal","Normal","Overlay","PopupMenu","ScreenSaver","Status","TornOffMenu","Utility","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","compare","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from_window_id","get_window_id","get_window_layer","get_window_level","into","into","partial_cmp","set_exclude_current_process_audio","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","with_exclude_bundle_ids","with_exclude_window_ids","with_maximum_fps","with_metal_device","with_resolution_type","with_scale_to_fit","with_window_level_range","Point","Rect","Size","ZERO","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","fmt","fmt","fmt","from","from","from","height","into","into","into","origin","scaled","scaled","scaled","scaled_2d","scaled_2d","scaled_2d","size","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","width","x","y"],"q":[[0,"crabgrab"],[7,"crabgrab::capturable_content"],[143,"crabgrab::capture_stream"],[314,"crabgrab::feature"],[319,"crabgrab::feature::bitmap"],[409,"crabgrab::feature::iosurface"],[440,"crabgrab::feature::metal"],[484,"crabgrab::feature::screenshot"],[500,"crabgrab::feature::wgpu"],[547,"crabgrab::frame"],[643,"crabgrab::platform"],[644,"crabgrab::platform::macos"],[717,"crabgrab::util"],[766,"core::error"],[767,"core::option"],[768,"core::fmt"],[769,"core::fmt"],[770,"core::future::future"],[771,"core::hash"],[772,"alloc::string"],[773,"core::any"],[774,"metal::device"],[775,"wgpu"],[776,"core::convert"],[777,"alloc::sync"],[778,"core::ops::function"],[779,"core::marker"],[780,"std::os::raw"],[781,"metal::texture"],[782,"wgpu"],[783,"core::time"],[784,"core::marker"]],"d":["Enumeration of capturable items","The actual capture stream and related constructs","Extension features","Audio and video frames","Platform-specific extensions","Everything","Geometry types","All capturable windows, but no displays","Represents an application with capturable windows","A collection of capturable content (windows, screens)","Represents an error that occurred when enumerating …","Selects the kind of capturable content to enumerate","Represents a capturable display","An iterator over capturable displays","Represents a capturable application window","Selects the kind of windows to enumerate for capture","An iterator over capturable windows","All capturable displays, but no windows","Everything that can be captured","Only normal windows and displays","Only normal windows - no modal panels, not the dock on …","","Gets the application that owns this window","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Desktop windows are elements of the desktop environment, …","Get an iterator over the capturable displays","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Gets the “identifier” of the application","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","Whether this filter allows any capturable content","Checks whether an application is visible (on-screen, not …","","Gets the friendly name of the application","Requests capturable content from the OS","Create a new content filter with the given filtering …","","","Whether to restrict to onscreen windows","Gets the process id of the application","Gets the virtual screen rectangle of the window","Gets the virtual screen rectangle of this display","","","","Gets the title of the window","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Get an iterator over the capturable windows","","","","The stream was already stopped","One plane, 4 channels, 10 bits per color channel, two bits …","This event is produced when the stream receives a new …","Configuration settings for audio streams","One plane, 4 channels, 8 bits per channel: { b: u8, g: u8, …","Represents programmatic capture access","Configuration settings for a capture stream","Represents an error creating the capture config","The pixel format of returned video frames","Represents an active capture stream","This event is produced once at the end of the stream","Two planes:","This event is produced when the stream goes idle - IE when …","The buffer count is out of the valid range for the …","","","","This represents an error when creating a capture stream","This represents an error during a stream, for example a …","Represents an event in a capture stream","This represents an error while stopping a stream","Requested features are not authorized","The supplied pixel format is unsupported by the …","The pixel format is unsupported by the implementation","Two planes:","This event is produced when the stream receives a new …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Start a new capture stream with the given stream callback","Creates a new audio capture config with default settings:","Prompt the user for permission to capture content","","","","","","Stop the capture","Gets the implementation’s supported pixel formats","Test whether the calling application has permission to …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Configure the buffer count - the number of frames in the …","Create a capture configuration for a given capturable …","","","Configure the output texture size - by default, this will …","","","Configure whether the cursor is visible in the capture","Supply a Wgpu device to the config, allowing the …","Create a capture configuration for a given capturable …","Frame to Bitmap conversion (requires bitmap feature)","Frame -> IOSurface conversion (requires iosurface feature)","Frame -> Metal Texture conversion (requires metal feature)","Screenshot utility function (requires screenshot feature)","Frame -> Wgpu Texture conversion (requires wgpu feature)","","A bitmap image of the selected format","A Bgra8888 format bitmap","A RgbaF16x4 format bitmap","A Rgba1010102 format bitmap","A YCbCr image, corresponding to either V420 or F420 pixel …","Luma: [0, 255], Chroma: [0, 255]","","","","Luma: [16, 240], Chroma: [0, 255]","A video frame which can produce a bitmap","Represents an error while generating a frame bitmap","The video range for a YCbCr format bitmap","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Create a bitmap image from this frame. This usually …","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Represents an error when getting the IOSurface behind this …","A MacOS IOSurface instance","A video frame which can inter-operate with any MacOS GPU …","There was no image buffer in this frame","There was no IOSurface in the frame’s image buffer","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Get the IOSurface representing the video frame’s texture","Gets the raw IOSurfaceRef","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","The Chrominance (CbCr, Blue/Red) plane for a YCbCr format …","","The Luminance (Y, Brightness) plane for a YCbCr format …","Represents an error getting the texture from a video frame","A capture stream which inter-operates with Metal","A video frame which can be used to create metal textures","Identifies planes of a video frame","","","","The single RGBA plane for an RGBA format frame","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Get the metal device used for frame capture","Get the texture for the given plane of the video frame","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","Represents an error while taking a screenshot","","","","","","","Returns the argument unchanged.","Calls U::from(self).","","Take a screenshot of the capturable content given a …","","","","","The Chrominance (CbCr, Blue/Red) plane for a YCbCr format …","The requested plane isn’t valid for this frame","The Luminance (Y, brightness) plane for a YCbCr format …","the backend texture couldn’t be fetched","No Wgpu device was supplied to the capture stream","","The single RGBA plane for an RGBA format frame","A capture config which can be supplied with a Wgpu device","A capture stream which may have had a Wgpu device instance …","Represents an error getting the texture from a video frame","A video frame which can be used to create Wgpu textures","Identifies planes of a video frame","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Gets the Wgpu device referenced by device wrapper supplied …","Gets the Wgpu device wrapper supplied to …","Get the texture for the given plane of the video frame","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","Represents an error getting the data for an audio channel","The number of audio channels to capture","Represents audio channel data in an audio frame","Wraps a “slice” of audio data for one channel, …","A frame of captured audio","The rate to capture audio samples","","","","","","","","","","","","","A frame of captured video","Get the data buffer for the captured audio channel","","","","","","","","","","","","","","","Get the Instant that this frame was delivered to the …","Get the channel count of the captured audio","","","","","Get the rectangle of the frame representing containing the …","Get the dpi of the contents of the frame (accounting for …","Get the duration of this audio frames","","","","","Get the sequence id of this frame (monotonically …","Get the sequence id of this video frame (monotonically …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Get the nth sample for this channel data","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Get the length of this sample buffer","Get the time since the start of the stream that this audio …","Get the time since the start of the stream that this frame …","Get the sample rate of the captured audio","Get the raw size of the frame","","","","","","","","","","","","","","","","","","","","","","","","Macos-specific extensions","","Automatically select the resolution type","","","Select the highest available capture resolution (usually …","","","","","","","","Mac OS specific extensions for audio capture configs","Mac OS specific extensions for capture content filters A …","Mac OS specific extensions for capturable windows A …","Mac OS specific extensions for capture configs","Mac OS “resolution type” The “resolution type” of …","Mac OS “window level” Represents the “window level”…","","","One linear screen unit per pixel, IE the “virtual …","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Try and convert the given CGWindowID to a capturable …","Get the native window id for this capturable window. This …","Get the window layer of this window","Get the window level of this window","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","Exclude windows who’s applications have the provided …","Exclude windows with the given CGWindowIDs","Set the maximum capture frame-rate","Set the metal device to use for texture creation","Set the resolution type of the capture. Does nothing on …","Set whether or not to scale content to the output size","Set the range of “window levels” to filter to …","Represents a 2D point","Represents an axis-aligned rectangle","Represents a 2D size","The point at (0, 0)","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","scale the size uniformly by some value","Scale the point uniformly by some value","Scale the rectangle uniformly","scale the size non-uniformly in x and y","Scale the point non-uniformly in x and y","Scale the rectangle non-uniformly in x and y","","","","","","","","","","","","","","","",""],"i":[0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,7,7,7,7,3,1,11,25,12,2,3,6,7,1,8,11,25,12,2,3,6,7,1,8,3,3,6,7,1,8,3,6,7,1,8,6,3,6,11,1,1,1,1,3,3,1,8,11,25,12,2,3,6,7,1,8,1,1,1,1,1,2,11,25,12,2,3,6,7,1,8,25,12,7,1,12,2,11,7,25,12,6,2,1,8,25,12,3,1,3,6,7,1,8,3,11,25,12,2,3,6,7,1,8,11,25,12,2,3,6,7,1,8,11,25,12,2,3,6,7,1,8,11,7,7,7,33,36,38,0,36,0,0,0,0,0,38,36,38,34,31,32,33,0,0,0,0,32,32,34,36,38,30,39,38,31,32,33,35,36,37,34,30,39,38,31,32,33,35,36,37,34,30,31,32,33,34,31,32,35,36,37,34,30,31,32,35,36,37,34,30,31,32,33,34,36,36,36,36,38,31,31,32,32,33,33,35,36,37,34,34,30,39,38,31,32,33,35,36,37,34,30,39,39,39,39,38,31,32,33,35,36,37,34,30,39,35,39,35,31,32,33,34,39,39,39,31,32,35,36,37,34,30,31,32,33,34,39,38,31,32,33,35,36,37,34,30,39,38,31,32,33,35,36,37,34,30,39,38,31,32,33,35,36,37,34,30,37,37,37,37,37,37,37,37,37,37,0,0,0,0,0,51,0,0,0,0,0,86,49,51,51,86,0,0,0,51,87,88,89,86,90,51,49,87,88,89,86,90,51,49,49,90,90,90,49,49,87,88,89,49,49,49,87,88,89,86,90,51,49,50,87,88,89,87,88,89,86,90,51,49,90,90,90,90,49,49,49,87,88,89,86,90,51,49,87,88,89,86,90,51,49,87,88,89,86,90,51,49,87,88,89,0,0,0,52,52,53,52,53,52,52,53,53,52,53,52,52,53,52,54,53,53,52,52,53,52,53,52,53,52,53,52,57,56,57,0,0,0,0,56,56,56,57,57,56,57,56,56,57,56,57,56,56,57,57,57,57,57,56,56,57,56,58,59,57,56,56,57,56,56,57,56,57,56,57,56,61,0,61,61,61,61,61,61,61,61,61,0,61,61,61,61,64,63,64,63,63,63,64,0,0,0,0,0,64,63,64,63,63,64,63,64,63,63,64,64,64,64,64,63,63,64,63,65,65,66,64,63,63,64,63,63,64,63,64,63,64,63,68,0,0,0,0,0,0,70,74,74,74,74,70,70,71,73,71,73,71,0,69,70,78,71,69,62,74,73,70,78,71,69,62,74,73,62,69,74,73,74,73,62,62,69,69,62,74,73,69,62,70,78,71,69,62,74,73,78,62,62,62,62,70,78,71,69,62,74,73,78,69,62,69,62,74,73,70,78,71,69,62,74,73,70,78,71,69,62,74,73,70,78,71,69,62,74,73,0,21,48,21,21,48,21,21,21,21,21,21,21,0,0,0,0,0,0,21,21,48,21,21,21,21,21,21,21,48,21,48,21,48,21,48,21,21,21,48,21,48,48,48,21,21,21,48,21,48,21,81,81,81,81,48,21,21,82,48,21,48,21,48,21,48,21,83,83,84,84,84,84,83,0,0,0,85,47,85,26,47,85,26,47,85,26,47,85,26,47,85,26,47,85,26,47,47,85,26,26,47,85,26,47,85,26,26,47,85,26,47,85,26,47,85,26,47,85,26,47,85,85],"f":"``````````````````````{bd}{ce{}{}}00000000000000000{f{{j{h}}}}{ff}{ll}{nn}{bb}{A`A`}{{ce}Ab{}{}}0000{{}l}{fAd}`{AfAh}{{bb}Aj}{{ce}Aj{}{}}00{{fAl}An}0{{bAl}An}{{A`Al}An}{cc{}}00000000{B`{{`{{Bf{}{{Bb{{Bd{bf}}}}}}}}}}{bB`}{b{{Bd{Bhf}}}}{b{{Bd{Bjf}}}}{{bc}AbBl}{dBn}{ce{}{}}0000000000{nAj}{bAj}{AhC`}4{n{{Bd{Aff}}}}{{Aj{j{l}}}n}{Cb{{j{c}}}{}}{Ah{{j{c}}}{}}`{dBh}{bCd}{A`Cd}{Cb{{Cf{C`{j{C`}}}}}}{Ah{{Cf{C`{j{C`}}}}}}{f{{j{h}}}}{bBn}>>>>>{cBn{}}{c{{Bd{e}}}{}{}}00000000000000000{cCh{}}00000000{AfCb}{{n{Cj{Ad}}}n}{{n{Cj{B`}}}n}{{n{j{Bj}}{j{Bj}}}{{Bd{nf}}}}``````````````````````````{ClAj}{ce{}{}}0000000000000000000{Cn{{j{h}}}}{D`{{j{h}}}}{Db{{j{h}}}}{Dd{{j{h}}}}{CnCn}{D`D`}{DfDf}{DhDh}{DjDj}{DdDd}{ClCl}{{ce}Ab{}{}}000000{CnAd}{D`Ad}{DbAd}{DdAd}{{DhDh}Aj}{{ce}Aj{}{}}00{{DlAl}An}{{CnAl}An}0{{D`Al}An}0{{DbAl}An}0{{DfAl}An}{{DhAl}An}{{DjAl}An}{{DdAl}An}0{{ClAl}An}{cc{}}000000000{DnE`}{Dn{{j{Eb}}}}{Dn{{j{{Ef{Ed}}}}}}{ce{}{}}000000000{{ClDjc}{{Bd{DnD`}}}{{Eh{{Bd{DlCn}}}}Ej}}{{}Df}{Aj{{j{Cl}}}}{{DfAj}Df}{Cn{{j{h}}}}{D`{{j{h}}}}{Db{{j{h}}}}{Dd{{j{h}}}}{Dn{{Bd{AbDb}}}}{{}{{Cj{Dh}}}}7:::::::{cBn{}}000{c{{Bd{e}}}{}{}}0000000000000000000{cCh{}}000000000{{DjC`}Dj}{{A`Dh}Dj}{{Dj{j{El}}}Dj}{{DjE`}Dj}{{DjEn}Dj}{{DjF`}Dj}{{DjAj}Dj}0{{Dj{Ef{Ed}}}{{Bd{DjBn}}}}{{bDh}{{Bd{DjDd}}}}````````````````````{ce{}{}}0000000000000{Fb{{j{h}}}}```{FbFb}{{ce}Ab{}{}}```{FbAd}{{FbAl}An}0{cc{}}000000{Fd{{Bd{FfFb}}}}```7777777````67{cBn{}}{c{{Bd{e}}}{}{}}0000000000000{cCh{}}000000````````::::{Fh{{j{h}}}}{FjFj}9{FhAd}{FjAb}{{FhAl}An}099{Fl{{Bd{FjFh}}}}{FjFn}{ce{}{}}070:999988```````````0000{G`{{j{h}}}}{GbGb}{G`G`}{{ce}Ab{}{}}0{G`Ad}{{GbGb}Aj}{{ce}Aj{}{}}00{{GbAl}An}{{G`Al}An}0{cc{}}0{GdE`}{{GfGb}{{Bd{GhG`}}}}<<;<<{cBn{}}{c{{Bd{e}}}{}{}}000{cCh{}}0``??{Gj{{j{h}}}}{GjAd}{{GjAl}An}08{ce{}{}}3{{ClDj}{{Bd{GlGj}}}}7665````````````1111{Gn{{j{h}}}}{H`H`}{GnGn}{{ce}Ab{}{}}0{GnAd}{{H`H`}Aj}{{ce}Aj{}{}}00{{H`Al}An}{{GnAl}An}0{cc{}}0{Hb{{j{Eb}}}}{Hb{{j{{Ef{Ed}}}}}}{{HdH`{j{Ad}}}{{Bd{HfGn}}}}>><>>{cBn{}}{c{{Bd{e}}}{}{}}000{cCh{}}0{{Hh{Ef{Ed}}}{{Bd{HhBn}}}}```````````````````{{HjC`}{{Bd{HlHn}}}}{ce{}{}}0000000000000{GlI`}{HjIb}{IdId}{IbIb}{{ce}Ab{}{}}0{GlCd}{GlIf}{HjIh}{{HjAl}An}{{GlAl}An}{{IdAl}An}{{IbAl}An}{HjIj}{GlIj}{cc{}}000000{{{Il{c}}C`}cIn}{Gl{{Bd{FfFb}}}}{Gl{{Bd{FjFh}}}}{{GlGb}{{Bd{GhG`}}}}{{GlH`{j{Ad}}}{{Bd{HfGn}}}}{ce{}{}}000000{{{Il{c}}}C`In}>{GlIh}{HjId}{GlEn}44{c{{Bd{e}}}{}{}}0000000000000{cCh{}}000000`````````````````````````````6666{F`F`}{BjBj}{{ce}Ab{}{}}0{{BjBj}J`}{{ce}J`{}{}}{{F`F`}Aj}{{BjBj}Aj}{{ce}Aj{}{}}00000{{F`Al}An}{{BjAl}An}{cc{}}0{B`{{`{{Bf{}{{Bb{{Bd{bf}}}}}}}}}}{JbB`}{Jb{{Bd{Bhf}}}}{Jb{{Bd{Bjf}}}}{ce{}{}}0{{BjBj}{{j{J`}}}}{{JdAj}Jd}22{c{{Bd{e}}}{}{}}000{cCh{}}0{{Jf{Cj{Ad}}}Jf}{{Jf{Cj{B`}}}Jf}{{Jh{j{El}}}Jh}{{JhE`}Jh}{{JhF`}Jh}{{JhAj}Jh}{{Jf{j{Bj}}{j{Bj}}}{{Bd{Jff}}}}````;;;;;;{EnEn}{JjJj}{CdCd}{{ce}Ab{}{}}00{{EnAl}An}{{JjAl}An}{{CdAl}An}{cc{}}00`{ce{}{}}00`{{EnIf}En}{{JjIf}Jj}{{CdIf}Cd}{{En{Cf{IfIf}}}En}{{Jj{Cf{IfIf}}}Jj}{{Cd{Cf{IfIf}}}Cd}`666{c{{Bd{e}}}{}{}}00000{cCh{}}00```","c":[],"p":[[5,"CapturableWindow",7],[5,"CapturableApplication",7],[6,"CapturableContentError",7],[10,"Error",766],[6,"Option",767],[5,"CapturableWindowFilter",7],[5,"CapturableContentFilter",7],[5,"CapturableDisplay",7],[1,"unit"],[1,"str"],[5,"CapturableContent",7],[5,"CapturableDisplayIterator",7],[1,"bool"],[5,"Formatter",768],[8,"Result",768],[1,"u32"],[17,"Output"],[6,"Result",769],[10,"Future",770],[1,"i32"],[6,"MacosWindowLevel",644],[10,"Hasher",771],[5,"String",772],[1,"usize"],[5,"CapturableWindowIterator",7],[5,"Rect",717],[1,"tuple"],[5,"TypeId",773],[1,"slice"],[5,"CaptureAccessToken",143],[6,"StreamError",143],[6,"StreamCreateError",143],[6,"StreamStopError",143],[6,"CaptureConfigError",143],[5,"AudioCaptureConfig",143],[6,"CapturePixelFormat",143],[5,"CaptureConfig",143],[6,"StreamEvent",143],[5,"CaptureStream",143],[5,"Device",774],[5,"Device",775],[10,"AsRef",776],[5,"Arc",777],[10,"FnMut",778],[10,"Send",779],[1,"f32"],[5,"Size",717],[6,"MacosCaptureResolutionType",644],[6,"VideoFrameBitmapError",319],[10,"VideoFrameBitmap",319],[6,"FrameBitmap",319],[6,"GetIoSurfaceError",409],[5,"IoSurface",409],[10,"MacosIoSurfaceVideoFrameExt",409],[8,"c_void",780],[6,"MacosVideoFrameError",440],[6,"MetalVideoFramePlaneTexture",440],[10,"MetalCaptureStreamExt",440],[10,"MetalVideoFrameExt",440],[5,"Texture",781],[6,"ScreenshotError",484],[5,"VideoFrame",547],[6,"WgpuVideoFrameError",500],[6,"WgpuVideoFramePlaneTexture",500],[10,"WgpuCaptureStreamExt",500],[10,"WgpuVideoFrameExt",500],[5,"Texture",775],[10,"WgpuCaptureConfigExt",500],[5,"AudioFrame",547],[6,"AudioChannelData",547],[6,"AudioBufferError",547],[5,"Instant",782],[6,"AudioChannelCount",547],[6,"AudioSampleRate",547],[1,"f64"],[5,"Duration",783],[1,"u64"],[5,"AudioChannelDataSamples",547],[10,"Copy",779],[6,"Ordering",784],[10,"MacosCapturableWindowExt",644],[10,"MacosAudioCaptureConfigExt",644],[10,"MacosCapturableContentFilterExt",644],[10,"MacosCaptureConfigExt",644],[5,"Point",717],[6,"VideoRange",319],[5,"FrameBitmapBgraUnorm8x4",319],[5,"FrameBitmapRgbaUnormPacked1010102",319],[5,"FrameBitmapRgbaF16x4",319],[5,"FrameBitmapYCbCr",319]],"b":[[60,"impl-Debug-for-CapturableContentError"],[61,"impl-Display-for-CapturableContentError"],[217,"impl-Debug-for-StreamError"],[218,"impl-Display-for-StreamError"],[219,"impl-Display-for-StreamCreateError"],[220,"impl-Debug-for-StreamCreateError"],[221,"impl-Display-for-StreamStopError"],[222,"impl-Debug-for-StreamStopError"],[226,"impl-Debug-for-CaptureConfigError"],[227,"impl-Display-for-CaptureConfigError"],[358,"impl-Display-for-VideoFrameBitmapError"],[359,"impl-Debug-for-VideoFrameBitmapError"],[423,"impl-Display-for-GetIoSurfaceError"],[424,"impl-Debug-for-GetIoSurfaceError"],[466,"impl-Debug-for-MacosVideoFrameError"],[467,"impl-Display-for-MacosVideoFrameError"],[490,"impl-Debug-for-ScreenshotError"],[491,"impl-Display-for-ScreenshotError"],[527,"impl-Display-for-WgpuVideoFrameError"],[528,"impl-Debug-for-WgpuVideoFrameError"]]}]\ +["crabgrab",{"t":"CCCCCCCTFFGFFFFFFTTTTPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNPPPFPFFGGFPPPPPPPGGGGPPPPPNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCCCCCPPPPPPKKKKKIGFFFFFPPFIPPPPKGGPPPNNNNNNNNNNNNNNNNNNNNNOOONNOOONNNNNNNNNNNNNMMOOOONNNNNNNNNOOONNONNNNNNNNNNNNMNNNNNNNNNNNNNNNNNNOOOOGFKPPNNNNNNNNNNNNNMNNNNNNNNNNNNPPPGKKGPPPPNNNNNNNNNNNNNNNNNNNMMNNNNNNNNNNNNPGNNNNNNNNNHNNNNPPPPPPPKKGKGNNNNNNNNNNNNNNNNNNNMMMNNNNNNNNNNNNMGGGFFGPPPPPPPPPPPPFNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNCPPPPPPPPPPPPKKKKGGPPPPPPPPPPNNNNNNNNNNNNNNNNNNNNNNMMMMNNNMNNNNNNNNMMMMMMMFFFTNNNNNNNNNNNNNNNNNNONNNONNNNNNONNNNNNNNNNNNOOO","n":["capturable_content","capture_stream","feature","frame","platform","prelude","util","ALL_WINDOWS","CapturableApplication","CapturableContent","CapturableContentError","CapturableContentFilter","CapturableDisplay","CapturableDisplayIterator","CapturableWindow","CapturableWindowFilter","CapturableWindowIterator","DISPLAYS","EVERYTHING","EVERYTHING_NORMAL","NORMAL_WINDOWS","Other","application","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","default","description","desktop_windows","displays","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from_window_id","get_window_id","get_window_layer","get_window_level","hash","identifier","into","into","into","into","into","into","into","into","into","into_iter","into_iter","is_empty","is_visible","len","name","new","new","next","next","onscreen_only","pid","rect","rect","size_hint","size_hint","source","title","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","windows","with_exclude_bundle_ids","with_exclude_window_ids","with_window_level_range","AlreadyStopped","Argb2101010","Audio","AudioCaptureConfig","Bgra8888","CaptureAccessToken","CaptureConfig","CaptureConfigError","CapturePixelFormat","CaptureStream","End","F420","Idle","InvalidBufferCount","Other","Other","Other","StreamCreateError","StreamError","StreamEvent","StreamStopError","UnauthorizedFeature","UnsupportedPixelFormat","UnsupportedPixelFormat","V420","Video","allows_borderless","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","cause","cause","cause","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","description","description","description","description","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","from","from","from","from","from","get_metal_device","get_wgpu_device","get_wgpu_device_wrapper","into","into","into","into","into","into","into","into","into","into","new","new","request_access","set_exclude_current_process_audio","source","source","source","source","stop","supported_pixel_formats","test_access","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","to_string","to_string","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","with_buffer_count","with_display","with_maximum_fps","with_metal_device","with_output_size","with_resolution_type","with_scale_to_fit","with_show_cursor","with_wgpu_device","with_window","bitmap","iosurface","metal","screenshot","wgpu","ArgbUnormPacked2101010","ArgbUnormPacked2101010","ArgbUnormPacked2101010","BgraUnorm8x4","BgraUnorm8x4","BgraUnorm8x4","BitmapDataArgbUnormPacked2101010","BitmapDataBgra8x4","BitmapDataChroma","BitmapDataLuma","BitmapDataRgbaF16x4","BoxedSliceFrameBitmap","FrameBitmap","FrameBitmapArgbUnormPacked2101010","FrameBitmapBgraUnorm8x4","FrameBitmapPool","FrameBitmapRgbaF16x4","FrameBitmapYCbCr","Full","Other","PooledBitmap","PooledFrameBitmap","RgbaF16x4","RgbaF16x4","RgbaF16x4","Video","VideoFrameBitmap","VideoFrameBitmapError","VideoRange","YCbCr","YCbCr","YCbCr","as_mut","as_ref","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","cause","chroma_data","chroma_height","chroma_width","clone","clone_into","data","data","data","description","fmt","fmt","free_pooled","from","from","from","from","from","from","from","from","from","get_bitmap","get_pooled_bitmap","height","height","height","height","into","into","into","into","into","into","into","into","into","luma_data","luma_height","luma_width","new","new_with_initial_capacity","range","source","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_pooled_bitmap","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","width","width","width","width","GetIoSurfaceError","IoSurface","MacosIoSurfaceVideoFrameExt","NoImageBuffer","NoIoSurface","borrow","borrow","borrow_mut","borrow_mut","cause","clone","clone_into","description","drop","fmt","fmt","from","from","get_iosurface","get_raw","into","into","source","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","Chroma","InvalidVideoPlaneTexture","Luminance","MacosVideoFrameError","MetalCaptureStreamExt","MetalVideoFrameExt","MetalVideoFramePlaneTexture","NoImageBuffer","NoIoSurface","Other","Rgba","borrow","borrow","borrow_mut","borrow_mut","cause","clone","clone","clone_into","clone_into","description","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","get_metal_device","get_metal_texture","into","into","source","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","Other","ScreenshotError","borrow","borrow_mut","cause","description","fmt","fmt","from","into","source","take_screenshot","to_string","try_from","try_into","type_id","Chroma","InvalidVideoPlaneTexture","Luminance","NoBackendTexture","NoWgpuDevice","Other","Rgba","WgpuCaptureConfigExt","WgpuCaptureStreamExt","WgpuVideoFrameError","WgpuVideoFrameExt","WgpuVideoFramePlaneTexture","borrow","borrow","borrow_mut","borrow_mut","cause","clone","clone","clone_into","clone_into","description","eq","equivalent","equivalent","equivalent","fmt","fmt","fmt","from","from","get_wgpu_device","get_wgpu_device_wrapper","get_wgpu_texture","into","into","source","to_owned","to_owned","to_string","try_from","try_from","try_into","try_into","type_id","type_id","with_wgpu_device","AudioBufferError","AudioChannelCount","AudioChannelData","AudioChannelDataSamples","AudioFrame","AudioSampleRate","F32","Hz16000","Hz24000","Hz48000","Hz8000","I16","I32","InvalidChannel","Mono","Other","Stereo","UnsupportedFormat","VideoFrame","audio_channel_buffer","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","capture_time","channel_count","clone","clone","clone_into","clone_into","content_rect","dpi","duration","fmt","fmt","fmt","fmt","frame_id","frame_id","from","from","from","from","from","from","from","get","get_bitmap","get_iosurface","get_metal_texture","get_pooled_bitmap","get_wgpu_texture","into","into","into","into","into","into","into","length","origin_time","origin_time","sample_rate","size","to_owned","to_owned","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_get_pooled_bitmap","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","macos","AssistiveTechHigh","Automatic","Backstop","BelowDesktop","Best","Cursor","Desktop","DesktopIcon","Dock","Dragging","Floating","Help","MacosAudioCaptureConfigExt","MacosCapturableContentFilterExt","MacosCapturableWindowExt","MacosCaptureConfigExt","MacosCaptureResolutionType","MacosWindowLevel","MainMenu","ModalPanel","Nominal","Normal","Overlay","PopupMenu","ScreenSaver","Status","TornOffMenu","Utility","borrow","borrow","borrow_mut","borrow_mut","clone","clone","clone_into","clone_into","cmp","compare","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","fmt","fmt","from","from","from_window_id","get_window_id","get_window_layer","get_window_level","into","into","partial_cmp","set_exclude_current_process_audio","to_owned","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","with_exclude_bundle_ids","with_exclude_window_ids","with_maximum_fps","with_metal_device","with_resolution_type","with_scale_to_fit","with_window_level_range","Point","Rect","Size","ZERO","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone_into","clone_into","clone_into","fmt","fmt","fmt","from","from","from","height","into","into","into","origin","scaled","scaled","scaled","scaled_2d","scaled_2d","scaled_2d","size","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","width","x","y"],"q":[[0,"crabgrab"],[7,"crabgrab::capturable_content"],[143,"crabgrab::capture_stream"],[314,"crabgrab::feature"],[319,"crabgrab::feature::bitmap"],[449,"crabgrab::feature::iosurface"],[480,"crabgrab::feature::metal"],[524,"crabgrab::feature::screenshot"],[540,"crabgrab::feature::wgpu"],[587,"crabgrab::frame"],[685,"crabgrab::platform"],[686,"crabgrab::platform::macos"],[759,"crabgrab::util"],[808,"core::error"],[809,"core::option"],[810,"core::fmt"],[811,"core::result"],[812,"core::future::future"],[813,"crabgrab::platform::macos::capturable_content"],[814,"core::hash"],[815,"alloc::string"],[816,"core::any"],[817,"metal::device"],[818,"wgpu"],[819,"core::convert"],[820,"alloc::sync"],[821,"core::ops::function"],[822,"core::marker"],[823,"crabgrab::platform::macos::capture_stream"],[824,"bytemuck::zeroable"],[825,"std::os::raw"],[826,"metal::texture"],[827,"std::time"],[828,"core::time"],[829,"core::cmp"],[830,"crabgrab::feature::screenshot::platform::macos"]],"i":[0,0,0,0,0,0,0,7,0,0,0,0,0,0,0,0,0,7,7,7,7,3,1,11,25,12,2,3,6,7,1,8,11,25,12,2,3,6,7,1,8,3,3,6,7,1,8,3,6,7,1,8,6,3,6,11,1,1,1,1,3,3,1,8,11,25,12,2,3,6,7,1,8,1,1,1,1,1,2,11,25,12,2,3,6,7,1,8,25,12,7,1,12,2,11,7,25,12,6,2,1,8,25,12,3,1,3,6,7,1,8,3,11,25,12,2,3,6,7,1,8,11,25,12,2,3,6,7,1,8,11,25,12,2,3,6,7,1,8,11,7,7,7,33,36,38,0,36,0,0,0,0,0,38,36,38,34,31,32,33,0,0,0,0,32,32,34,36,38,30,39,38,31,32,33,35,36,37,34,30,39,38,31,32,33,35,36,37,34,30,31,32,33,34,31,32,35,36,37,34,30,31,32,35,36,37,34,30,31,32,33,34,36,36,36,36,38,31,31,32,32,33,33,35,36,37,34,34,30,39,38,31,32,33,35,36,37,34,30,39,39,39,39,38,31,32,33,35,36,37,34,30,39,35,39,35,31,32,33,34,39,39,39,31,32,35,36,37,34,30,31,32,33,34,39,38,31,32,33,35,36,37,34,30,39,38,31,32,33,35,36,37,34,30,39,38,31,32,33,35,36,37,34,30,37,37,37,37,37,37,37,37,37,37,0,0,0,0,0,91,56,57,91,56,57,0,0,0,0,0,0,0,0,0,0,0,0,92,53,0,0,91,56,57,92,0,0,0,91,56,57,49,49,49,93,94,95,92,96,91,54,53,49,93,94,95,92,96,91,54,53,53,96,96,96,53,53,93,94,95,53,53,53,54,49,93,94,95,92,96,91,54,53,55,55,49,93,94,95,49,93,94,95,92,96,91,54,53,96,96,96,54,54,96,53,53,53,49,93,94,95,92,96,91,54,53,55,49,93,94,95,92,96,91,54,53,49,93,94,95,92,96,91,54,53,49,93,94,95,0,0,0,58,58,59,58,59,58,58,59,59,58,59,58,58,59,58,60,59,59,58,58,59,58,59,58,59,58,59,58,63,62,63,0,0,0,0,62,62,62,63,63,62,63,62,62,63,62,63,62,62,63,63,63,63,63,62,62,63,62,64,65,63,62,62,63,62,62,63,62,63,62,63,62,67,0,67,67,67,67,67,67,67,67,67,0,67,67,67,67,70,69,70,69,69,69,70,0,0,0,0,0,70,69,70,69,69,70,69,70,69,69,70,70,70,70,70,69,69,70,69,71,71,72,70,69,69,70,69,69,70,69,70,69,70,69,74,0,0,0,0,0,0,76,80,80,80,80,76,76,77,79,77,79,77,0,75,76,84,77,75,68,80,79,76,84,77,75,68,80,79,68,75,80,79,80,79,68,68,75,75,68,80,79,75,68,76,84,77,75,68,80,79,84,68,68,68,68,68,76,84,77,75,68,80,79,84,75,68,75,68,80,79,76,84,77,75,68,80,79,68,76,84,77,75,68,80,79,76,84,77,75,68,80,79,0,21,48,21,21,48,21,21,21,21,21,21,21,0,0,0,0,0,0,21,21,48,21,21,21,21,21,21,21,48,21,48,21,48,21,48,21,21,21,48,21,48,48,48,21,21,21,48,21,48,21,86,86,86,86,48,21,21,87,48,21,48,21,48,21,48,21,88,88,89,89,89,89,88,0,0,0,90,47,90,26,47,90,26,47,90,26,47,90,26,47,90,26,47,90,26,47,47,90,26,26,47,90,26,47,90,26,26,47,90,26,47,90,26,47,90,26,47,90,26,47,90,90],"f":"``````````````````````{bd}{ce{}{}}00000000000000000{f{{j{h}}}}{ff}{ll}{nn}{bb}{A`A`}{{ce}Ab{}{}}0000{{}l}{fAd}`{AfAh}{{bb}Aj}{{ce}Aj{}{}}00{{fAl}An}0{{bAl}An}{{A`Al}An}{cc{}}00000000{B`{{`{{Bf{}{{Bb{{Bd{bf}}}}}}}}}}{bB`}{b{{Bd{Bhf}}}}{b{{Bd{Bjf}}}}{{bc}AbBl}{dBn}{ce{}{}}0000000000{nAj}{bAj}{AhC`}4{n{{Bd{Aff}}}}{{Aj{j{l}}}n}{Cb{{j{c}}}{}}{Ah{{j{c}}}{}}`{dBh}{bCd}{A`Cd}{Cb{{Cf{C`{j{C`}}}}}}{Ah{{Cf{C`{j{C`}}}}}}{f{{j{h}}}}{bBn}>>>>>{cBn{}}{c{{Bd{e}}}{}{}}00000000000000000{cCh{}}00000000{AfCb}{{n{Cj{Ad}}}n}{{n{Cj{B`}}}n}{{n{j{Bj}}{j{Bj}}}{{Bd{nf}}}}``````````````````````````{ClAj}{ce{}{}}0000000000000000000{Cn{{j{h}}}}{D`{{j{h}}}}{Db{{j{h}}}}{Dd{{j{h}}}}{CnCn}{D`D`}{DfDf}{DhDh}{DjDj}{DdDd}{ClCl}{{ce}Ab{}{}}000000{CnAd}{D`Ad}{DbAd}{DdAd}{{DhDh}Aj}{{ce}Aj{}{}}00{{DlAl}An}{{CnAl}An}0{{D`Al}An}0{{DbAl}An}0{{DfAl}An}{{DhAl}An}{{DjAl}An}{{DdAl}An}0{{ClAl}An}{cc{}}000000000{DnE`}{Dn{{j{Eb}}}}{Dn{{j{{Ef{Ed}}}}}}{ce{}{}}000000000{{ClDjc}{{Bd{DnD`}}}{{Eh{{Bd{DlCn}}}}Ej}}{{}Df}{Aj{{j{Cl}}}}{{DfAj}Df}{Cn{{j{h}}}}{D`{{j{h}}}}{Db{{j{h}}}}{Dd{{j{h}}}}{Dn{{Bd{AbDb}}}}{{}{{Cj{Dh}}}}7:::::::{cBn{}}000{c{{Bd{e}}}{}{}}0000000000000000000{cCh{}}000000000{{DjC`}Dj}{{A`Dh}Dj}{{Dj{j{El}}}Dj}{{DjE`}Dj}{{DjEn}Dj}{{DjF`}Dj}{{DjAj}Dj}0{{Dj{Ef{Ed}}}{{Bd{DjBn}}}}{{bDh}{{Bd{DjDd}}}}`````````````````````````````````````{{{Fb{c}}}{{Cj{c}}}{FdFfFh}}0{ce{}{}}00000000000000000{Fj{{j{h}}}}```{FjFj}{{ce}Ab{}{}}```{FjAd}{{FjAl}An}0{FlAb}{cc{}}00000000{Fn{{Bd{G`Fj}}}}{{FnFl}{{Bd{GbFj}}}}````999999999```{C`Fl}{{C`{Cf{C`C`}}C`Dh}Fl}`:;{cBn{}}{c{{Bd{e}}}{}{}}00000000{{FnFl}{{Bd{{j{Gb}}Fj}}}}111111111{cCh{}}00000000`````````????{Gd{{j{h}}}}{GfGf}>{GdAd}{GfAb}{{GdAl}An}0=={Gh{{Bd{GfGd}}}}{GfGj}{ce{}{}}070;::::88```````````0000{Gl{{j{h}}}}{GnGn}{GlGl}{{ce}Ab{}{}}0{GlAd}{{GnGn}Aj}{{ce}Aj{}{}}00{{GnAl}An}{{GlAl}An}0{cc{}}0{H`E`}{{HbGn}{{Bd{HdGl}}}}<<;<<{cBn{}}{c{{Bd{e}}}{}{}}000{cCh{}}0``??{Hf{{j{h}}}}{HfAd}{{HfAl}An}08{ce{}{}}3{{ClDj}{{Bd{HhHf}}}}7665````````````1111{Hj{{j{h}}}}{HlHl}{HjHj}{{ce}Ab{}{}}0{HjAd}{{HlHl}Aj}{{ce}Aj{}{}}00{{HlAl}An}{{HjAl}An}0{cc{}}0{Hn{{j{Eb}}}}{Hn{{j{{Ef{Ed}}}}}}{{I`Hl{j{Ad}}}{{Bd{IbHj}}}}>><>>{cBn{}}{c{{Bd{e}}}{}{}}000{cCh{}}0{{Id{Ef{Ed}}}{{Bd{IdBn}}}}```````````````````{{IfC`}{{Bd{IhIj}}}}{ce{}{}}0000000000000{HhIl}{IfIn}{J`J`}{InIn}{{ce}Ab{}{}}0{HhCd}{HhJb}{IfJd}{{IfAl}An}{{HhAl}An}{{J`Al}An}{{InAl}An}{IfJf}{HhJf}{cc{}}000000{{{Jh{c}}C`}cFh}{Hh{{Bd{G`Fj}}}}{Hh{{Bd{GfGd}}}}{{HhGn}{{Bd{HdGl}}}}{{HhFl}{{Bd{GbFj}}}}{{HhHl{j{Ad}}}{{Bd{IbHj}}}}{ce{}{}}000000{{{Jh{c}}}C`Fh}?{HhJd}{IfJ`}{HhEn}44{c{{Bd{e}}}{}{}}000000{{HhFl}{{Bd{{j{Gb}}Fj}}}}1111111{cCh{}}000000`````````````````````````````7777{F`F`}{BjBj}{{ce}Ab{}{}}0{{BjBj}Jj}{{ce}Jj{}{}}{{F`F`}Aj}{{BjBj}Aj}{{ce}Aj{}{}}00000{{F`Al}An}{{BjAl}An}{cc{}}0{B`{{`{{Bf{}{{Bb{{Bd{bf}}}}}}}}}}{JlB`}{Jl{{Bd{Bhf}}}}{Jl{{Bd{Bjf}}}}{ce{}{}}0{{BjBj}{{j{Jj}}}}{{JnAj}Jn}22{c{{Bd{e}}}{}{}}000{cCh{}}0{{K`{Cj{Ad}}}K`}{{K`{Cj{B`}}}K`}{{Kb{j{El}}}Kb}{{KbE`}Kb}{{KbF`}Kb}{{KbAj}Kb}{{K`{j{Bj}}{j{Bj}}}{{Bd{K`f}}}}````;;;;;;{EnEn}{KdKd}{CdCd}{{ce}Ab{}{}}00{{EnAl}An}{{KdAl}An}{{CdAl}An}{cc{}}00`{ce{}{}}00`{{EnJb}En}{{KdJb}Kd}{{CdJb}Cd}{{En{Cf{JbJb}}}En}{{Kd{Cf{JbJb}}}Kd}{{Cd{Cf{JbJb}}}Cd}`666{c{{Bd{e}}}{}{}}00000{cCh{}}00```","D":"BC`","p":[[5,"CapturableWindow",7],[5,"CapturableApplication",7],[6,"CapturableContentError",7],[10,"Error",808],[6,"Option",809],[5,"CapturableWindowFilter",7],[5,"CapturableContentFilter",7],[5,"CapturableDisplay",7],[1,"unit"],[1,"str"],[5,"CapturableContent",7],[5,"CapturableDisplayIterator",7],[1,"bool"],[5,"Formatter",810],[8,"Result",810],[1,"u32"],[17,"Output"],[6,"Result",811],[10,"Future",812],[1,"i32"],[6,"MacosWindowLevel",686,813],[10,"Hasher",814],[5,"String",815],[1,"usize"],[5,"CapturableWindowIterator",7],[5,"Rect",759],[1,"tuple"],[5,"TypeId",816],[1,"slice"],[5,"CaptureAccessToken",143],[6,"StreamError",143],[6,"StreamCreateError",143],[6,"StreamStopError",143],[6,"CaptureConfigError",143],[5,"AudioCaptureConfig",143],[6,"CapturePixelFormat",143],[5,"CaptureConfig",143],[6,"StreamEvent",143],[5,"CaptureStream",143],[5,"Device",817],[5,"Device",818],[10,"AsRef",819],[5,"Arc",820],[10,"FnMut",821],[10,"Send",822],[1,"f32"],[5,"Size",759],[6,"MacosCaptureResolutionType",686,823],[5,"PooledBitmap",319],[10,"Sized",822],[10,"Zeroable",824],[10,"Copy",822],[6,"VideoFrameBitmapError",319],[5,"FrameBitmapPool",319],[10,"VideoFrameBitmap",319],[8,"BoxedSliceFrameBitmap",319],[8,"PooledFrameBitmap",319],[6,"GetIoSurfaceError",449],[5,"IoSurface",449],[10,"MacosIoSurfaceVideoFrameExt",449],[8,"c_void",825],[6,"MacosVideoFrameError",480],[6,"MetalVideoFramePlaneTexture",480],[10,"MetalCaptureStreamExt",480],[10,"MetalVideoFrameExt",480],[5,"Texture",826],[6,"ScreenshotError",524],[5,"VideoFrame",587],[6,"WgpuVideoFrameError",540],[6,"WgpuVideoFramePlaneTexture",540],[10,"WgpuCaptureStreamExt",540],[10,"WgpuVideoFrameExt",540],[5,"Texture",818],[10,"WgpuCaptureConfigExt",540],[5,"AudioFrame",587],[6,"AudioChannelData",587],[6,"AudioBufferError",587],[5,"Instant",827],[6,"AudioChannelCount",587],[6,"AudioSampleRate",587],[1,"f64"],[5,"Duration",828],[1,"u64"],[5,"AudioChannelDataSamples",587],[6,"Ordering",829],[10,"MacosCapturableWindowExt",686,813],[10,"MacosAudioCaptureConfigExt",686,823],[10,"MacosCapturableContentFilterExt",686,813],[10,"MacosCaptureConfigExt",686,823],[5,"Point",759],[6,"FrameBitmap",319],[6,"VideoRange",319],[5,"FrameBitmapBgraUnorm8x4",319],[5,"FrameBitmapArgbUnormPacked2101010",319],[5,"FrameBitmapRgbaF16x4",319],[5,"FrameBitmapYCbCr",319]],"r":[[535,830],[698,823],[699,813],[700,813],[701,823],[702,823],[703,813]],"b":[[60,"impl-Debug-for-CapturableContentError"],[61,"impl-Display-for-CapturableContentError"],[217,"impl-Display-for-StreamError"],[218,"impl-Debug-for-StreamError"],[219,"impl-Debug-for-StreamCreateError"],[220,"impl-Display-for-StreamCreateError"],[221,"impl-Display-for-StreamStopError"],[222,"impl-Debug-for-StreamStopError"],[226,"impl-Display-for-CaptureConfigError"],[227,"impl-Debug-for-CaptureConfigError"],[381,"impl-Display-for-VideoFrameBitmapError"],[382,"impl-Debug-for-VideoFrameBitmapError"],[463,"impl-Debug-for-GetIoSurfaceError"],[464,"impl-Display-for-GetIoSurfaceError"],[506,"impl-Debug-for-MacosVideoFrameError"],[507,"impl-Display-for-MacosVideoFrameError"],[530,"impl-Debug-for-ScreenshotError"],[531,"impl-Display-for-ScreenshotError"],[567,"impl-Debug-for-WgpuVideoFrameError"],[568,"impl-Display-for-WgpuVideoFrameError"]],"c":"OjAAAAAAAAA=","e":"OzAAAAEAABACNQAWAAAAGAAeADkABwBKAAQAWQABAF0AAABhAAEAZwACAGsAIACNAAIAngACAKoAOwDwAAIAAAEEAAgBKAAzAQEANgEBAEABBQBTAQAAVgECAF0BIgCMAQMAmQECAJ4BDACsARUAxwEKANgBCADiAQAA6AECAOwBEAADAgoADwIFABcCAAAZAgMAIgIAACkCEABBAgoAUgILAGACDQBwAgMAdwIDAIUCBACWAhcArwIAALECAQC0AgYAwQIBAMQCGgDnAgkA/AIOAA4DAAASAwAAGQMPAA=="}]\ ]')); if (typeof exports !== 'undefined') exports.searchIndex = searchIndex; else if (window.initSearch) window.initSearch(searchIndex); diff --git a/docs/macos_docs/search.desc/crabgrab/crabgrab-desc-0-.js b/docs/macos_docs/search.desc/crabgrab/crabgrab-desc-0-.js new file mode 100644 index 00000000..1462addf --- /dev/null +++ b/docs/macos_docs/search.desc/crabgrab/crabgrab-desc-0-.js @@ -0,0 +1 @@ +searchState.loadedDescShard("crabgrab", 0, "A cross-platform screen/window/audio capture library\nEnumeration of capturable items\nThe actual capture stream and related constructs\nExtension features\nAudio and video frames\nPlatform-specific extensions\nEverything\nGeometry types\nAll capturable windows, but no displays\nRepresents an application with capturable windows\nA collection of capturable content (windows, screens)\nRepresents an error that occurred when enumerating …\nSelects the kind of capturable content to enumerate\nRepresents a capturable display\nAn iterator over capturable displays\nRepresents a capturable application window\nSelects the kind of windows to enumerate for capture\nAn iterator over capturable windows\nAll capturable displays, but no windows\nEverything that can be captured\nOnly normal windows and displays\nOnly normal windows - no modal panels, not the dock on …\nGets the application that owns this window\nDesktop windows are elements of the desktop environment, …\nGet an iterator over the capturable displays\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the “identifier” of the application\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nWhether this filter allows any capturable content\nChecks whether an application is visible (on-screen, not …\nGets the friendly name of the application\nRequests capturable content from the OS\nCreate a new content filter with the given filtering …\nWhether to restrict to onscreen windows\nGets the process id of the application\nGets the virtual screen rectangle of the window\nGets the virtual screen rectangle of this display\nGets the title of the window\nGet an iterator over the capturable windows\nThe stream was already stopped\nOne plane, 4 channels, 10 bits per color channel, two bits …\nThis event is produced when the stream receives a new …\nConfiguration settings for audio streams\nOne plane, 4 channels, 8 bits per channel: { b: u8, g: u8, …\nRepresents programmatic capture access\nConfiguration settings for a capture stream\nRepresents an error creating the capture config\nThe pixel format of returned video frames\nRepresents an active capture stream\nThis event is produced once at the end of the stream\nTwo planes:\nThis event is produced when the stream goes idle - IE when …\nThe buffer count is out of the valid range for the …\nThis represents an error when creating a capture stream\nThis represents an error during a stream, for example a …\nRepresents an event in a capture stream\nThis represents an error while stopping a stream\nRequested features are not authorized\nThe supplied pixel format is unsupported by the …\nThe pixel format is unsupported by the implementation\nTwo planes:\nThis event is produced when the stream receives a new …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nStart a new capture stream with the given stream callback\nCreates a new audio capture config with default settings:\nPrompt the user for permission to capture content\nStop the capture\nGets the implementation’s supported pixel formats\nTest whether the calling application has permission to …\nConfigure the buffer count - the number of frames in the …\nCreate a capture configuration for a given capturable …\nConfigure the output texture size - by default, this will …\nConfigure whether the cursor is visible in the capture\nSupply a Wgpu device to the config, allowing the …\nCreate a capture configuration for a given capturable …\nFrame to Bitmap conversion (requires bitmap feature)\nFrame -> IOSurface conversion (requires iosurface feature)\nFrame -> Metal Texture conversion (requires metal feature)\nScreenshot utility function (requires screenshot feature)\nFrame -> Wgpu Texture conversion (requires wgpu feature)\nBitmap data in the Argb2101010 format\nBitmap data in the Bgra8888 format\nBitmap data in the CbCr Chroma/u8x2 format\nBitmap data in the Luma/u8 format\nBitmap data in the RgbaF16x4 format\nA Bitmap with boxed-slice image data\nA bitmap image of the selected format\nA Rgba1010102 format bitmap\nA Bgra8888 format bitmap\nA pool of frame bitmaps\nA RgbaF16x4 format bitmap\nA YCbCr image, corresponding to either V420 or F420 pixel …\nLuma: [0, 255], Chroma: [0, 255]\nA pooled bitmap, belinging to it’s creator BitmapPool. …\nA bitmap with booled images as bitmap data\nLuma: [16, 240], Chroma: [0, 255]\nA video frame which can produce a bitmap\nRepresents an error while generating a frame bitmap\nThe video range for a YCbCr format bitmap\nFree all pooled bitmaps - this happens automatically on …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCreate a bitmap image from this frame. This usually …\nGet a pooled bitmap, waiting for one to become available …\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCreate a new frame bitmap pool, limited to max pooled …\nCreate a new bitmap pool with an initial capacity and …\nTry and get a pooled bitmap using the given bitmap pool, …\nRepresents an error when getting the IOSurface behind this …\nA MacOS IOSurface instance\nA video frame which can inter-operate with any MacOS GPU …\nThere was no image buffer in this frame\nThere was no IOSurface in the frame’s image buffer\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet the IOSurface representing the video frame’s texture\nGets the raw IOSurfaceRef\nCalls U::from(self).\nCalls U::from(self).\nThe Chrominance (CbCr, Blue/Red) plane for a YCbCr format …\nThe Luminance (Y, Brightness) plane for a YCbCr format …\nRepresents an error getting the texture from a video frame\nA capture stream which inter-operates with Metal\nA video frame which can be used to create metal textures\nIdentifies planes of a video frame\nThe single RGBA plane for an RGBA format frame\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet the metal device used for frame capture\nGet the texture for the given plane of the video frame\nCalls U::from(self).\nCalls U::from(self).\nRepresents an error while taking a screenshot\nReturns the argument unchanged.\nCalls U::from(self).\nTake a screenshot of the capturable content given a …\nThe Chrominance (CbCr, Blue/Red) plane for a YCbCr format …\nThe requested plane isn’t valid for this frame\nThe Luminance (Y, brightness) plane for a YCbCr format …\nthe backend texture couldn’t be fetched\nNo Wgpu device was supplied to the capture stream\nThe single RGBA plane for an RGBA format frame\nA capture config which can be supplied with a Wgpu device\nA capture stream which may have had a Wgpu device instance …\nRepresents an error getting the texture from a video frame\nA video frame which can be used to create Wgpu textures\nIdentifies planes of a video frame\nReturns the argument unchanged.\nReturns the argument unchanged.\nGets the Wgpu device referenced by device wrapper supplied …\nGets the Wgpu device wrapper supplied to …\nGet the texture for the given plane of the video frame\nCalls U::from(self).\nCalls U::from(self).\nRepresents an error getting the data for an audio channel\nThe number of audio channels to capture\nRepresents audio channel data in an audio frame\nWraps a “slice” of audio data for one channel, …\nA frame of captured audio\nThe rate to capture audio samples\nA frame of captured video\nGet the data buffer for the captured audio channel\nGet the Instant that this frame was delivered to the …\nGet the channel count of the captured audio\nGet the rectangle of the frame representing containing the …\nGet the dpi of the contents of the frame (accounting for …\nGet the duration of this audio frames\nGet the sequence id of this frame (monotonically …\nGet the sequence id of this video frame (monotonically …\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nGet the nth sample for this channel data\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nGet the length of this sample buffer\nGet the time since the start of the stream that this audio …\nGet the time since the start of the stream that this frame …\nGet the sample rate of the captured audio\nGet the raw size of the frame\nMacos-specific extensions\nAutomatically select the resolution type\nSelect the highest available capture resolution (usually …\nMac OS specific extensions for audio capture configs\nMac OS specific extensions for capture content filters A …\nMac OS specific extensions for capturable windows A …\nMac OS specific extensions for capture configs\nMac OS “resolution type” The “resolution type” of …\nMac OS “window level” Represents the “window level”…\nOne linear screen unit per pixel, IE the “virtual …\nReturns the argument unchanged.\nReturns the argument unchanged.\nTry and convert the given CGWindowID to a capturable …\nGet the native window id for this capturable window. This …\nGet the window layer of this window\nGet the window level of this window\nCalls U::from(self).\nCalls U::from(self).\nExclude windows who’s applications have the provided …\nExclude windows with the given CGWindowIDs\nSet the maximum capture frame-rate\nSet the metal device to use for texture creation\nSet the resolution type of the capture. Does nothing on …\nSet whether or not to scale content to the output size\nSet the range of “window levels” to filter to …\nRepresents a 2D point\nRepresents an axis-aligned rectangle\nRepresents a 2D size\nThe point at (0, 0)\nReturns the argument unchanged.\nReturns the argument unchanged.\nReturns the argument unchanged.\nCalls U::from(self).\nCalls U::from(self).\nCalls U::from(self).\nscale the size uniformly by some value\nScale the point uniformly by some value\nScale the rectangle uniformly\nscale the size non-uniformly in x and y\nScale the point non-uniformly in x and y\nScale the rectangle non-uniformly in x and y") \ No newline at end of file diff --git a/docs/macos_docs/settings.html b/docs/macos_docs/settings.html index 583a9b84..02c12a04 100644 --- a/docs/macos_docs/settings.html +++ b/docs/macos_docs/settings.html @@ -1,2 +1 @@ -Settings -

    Rustdoc settings

    Back
    \ No newline at end of file +Settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/docs/macos_docs/src/crabgrab/capturable_content.rs.html b/docs/macos_docs/src/crabgrab/capturable_content.rs.html index f7069069..26f77f58 100644 --- a/docs/macos_docs/src/crabgrab/capturable_content.rs.html +++ b/docs/macos_docs/src/crabgrab/capturable_content.rs.html @@ -1,6 +1,4 @@ -capturable_content.rs - source -
    1
    +capturable_content.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/capture_stream.rs.html b/docs/macos_docs/src/crabgrab/capture_stream.rs.html
    index 7906f3e8..6b49e78a 100644
    --- a/docs/macos_docs/src/crabgrab/capture_stream.rs.html
    +++ b/docs/macos_docs/src/crabgrab/capture_stream.rs.html
    @@ -1,6 +1,4 @@
    -capture_stream.rs - source
    -    
    1
    +capture_stream.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/feature/bitmap/mod.rs.html b/docs/macos_docs/src/crabgrab/feature/bitmap/mod.rs.html
    index 1a962df2..2c4f58f8 100644
    --- a/docs/macos_docs/src/crabgrab/feature/bitmap/mod.rs.html
    +++ b/docs/macos_docs/src/crabgrab/feature/bitmap/mod.rs.html
    @@ -1,6 +1,4 @@
    -mod.rs - source
    -    
    1
    +mod.rs - source
    1
     2
     3
     4
    @@ -279,14 +277,478 @@ 

    Files

    277 278 279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735
    #![cfg(feature = "bitmap")]
     
     use std::error::Error;
     use std::fmt::Display;
    +use std::os::raw::c_void;
    +use bytemuck::Pod;
    +use bytemuck::Zeroable;
    +use parking_lot::Mutex;
    +use parking_lot::Condvar;
    +use std::sync::Arc;
     
     use half::f16;
     
    +use crate::prelude::CapturePixelFormat;
     use crate::prelude::VideoFrame;
    +
     #[cfg(target_os = "macos")]
     use crate::platform::macos::frame::MacosVideoFrame;
     #[cfg(target_os = "macos")]
    @@ -309,23 +771,148 @@ 

    Files

    #[cfg(target_os = "windows")] use windows::Win32::Graphics::Direct3D11::D3D11_USAGE_DYNAMIC; +#[derive(Clone)] +struct BitmapPool<T: Sized + Zeroable + Copy> { + free_bitmaps_and_count: Arc<Mutex<(Vec<Box<[T]>>, usize)>>, + free_condition: Arc<Condvar>, + max: usize, +} + +impl<T: Sized + Zeroable + Copy> BitmapPool<T> { + pub fn new(initial_count: usize, max: usize, initial_resolution: (usize, usize)) -> Arc<Self> { + let mut free_bitmaps = Vec::new(); + for _ in 0..initial_count { + free_bitmaps.push( + vec![T::zeroed(); initial_resolution.0 * initial_resolution.1].into_boxed_slice() + ) + } + Arc::new(Self { + free_bitmaps_and_count: Arc::new(Mutex::new((free_bitmaps, initial_count))), + free_condition: Arc::new(Condvar::new()), + max, + }) + } + + fn make_new_bitmap(self: &Arc<Self>, resolution: (usize, usize)) -> Option<PooledBitmap<T>> { + Some(PooledBitmap { + data: PooledBitmapData { + data: Some(vec![T::zeroed(); resolution.0 * resolution.1].into_boxed_slice()), + pool: self.clone() + }, + width: resolution.0, + height: resolution.1 + }) + } + + pub fn try_get_bitmap(self: &Arc<Self>, resolution: (usize, usize)) -> Option<PooledBitmap<T>> { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + self.try_get_bitmap_internal(resolution, &mut free_bitmaps_and_count) + } + + pub fn get_bitmap(self: &Arc<Self>, resolution: (usize, usize)) -> PooledBitmap<T> { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + loop { + if let Some(pooled_bitmap) = self.try_get_bitmap_internal(resolution, &mut free_bitmaps_and_count) { + return pooled_bitmap; + } else { + self.free_condition.wait(&mut free_bitmaps_and_count); + } + } + } + + fn try_get_bitmap_internal(self: &Arc<Self>, resolution: (usize, usize), free_bitmaps_and_count: &mut (Vec<Box<[T]>>, usize)) -> Option<PooledBitmap<T>> { + if let Some(bitmap_data) = free_bitmaps_and_count.0.pop() { + if bitmap_data.len() <= resolution.0 * resolution.1 { + return Some( + PooledBitmap { + data: PooledBitmapData { + data: Some(bitmap_data), + pool: self.clone() + }, + width: resolution.0, + height: resolution.1 + } + ); + } + free_bitmaps_and_count.1 -= 1; + } + if free_bitmaps_and_count.1 < self.max { + return self.make_new_bitmap(resolution); + } + None + } + + pub fn free_pooled(&self) { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + let count = free_bitmaps_and_count.0.len(); + free_bitmaps_and_count.0.clear(); + free_bitmaps_and_count.1 -= count; + } +} + +struct PooledBitmapData<T: Sized + Zeroable + Copy> { + pub data: Option<Box<[T]>>, + pub pool: Arc<BitmapPool<T>>, +} + +impl<T: Sized + Zeroable + Copy> Drop for PooledBitmapData<T> { + fn drop(&mut self) { + if let Some(data) = self.data.take() { + let mut free_bitmaps_and_count = self.pool.free_bitmaps_and_count.lock(); + free_bitmaps_and_count.0.push(data); + self.pool.free_condition.notify_all(); + } + } +} + +/// A pooled bitmap, belinging to it's creator BitmapPool. When this bitmap is dropped, it will be returned to it's pool. +pub struct PooledBitmap<T: Sized + Copy + Zeroable> { + data: PooledBitmapData<T>, + pub width: usize, + pub height: usize, +} + +impl<T: Sized + Zeroable + Copy> AsRef<[T]> for PooledBitmap<T> { + fn as_ref(&self) -> &[T] { + &self.data.data.as_ref().unwrap()[..] + } +} + +impl<T: Sized + Zeroable + Copy> AsMut<[T]> for PooledBitmap<T> { + fn as_mut(&mut self) -> &mut [T] { + &mut self.data.data.as_mut().unwrap()[..] + } +} + +/// Bitmap data in the Bgra8888 format +pub trait BitmapDataBgra8x4: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]> {} +impl<T: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]>> BitmapDataBgra8x4 for T {} + /// A Bgra8888 format bitmap -pub struct FrameBitmapBgraUnorm8x4 { - pub data: Box<[[u8; 4]]>, +pub struct FrameBitmapBgraUnorm8x4<Data: BitmapDataBgra8x4> { + pub data: Data, pub width: usize, pub height: usize, } +/// Bitmap data in the Argb2101010 format +pub trait BitmapDataArgbUnormPacked2101010: Sized + AsRef<[u32]> {} +impl<T: Sized + AsRef<[u32]> + AsMut<[u32]>> BitmapDataArgbUnormPacked2101010 for T {} + /// A Rgba1010102 format bitmap -pub struct FrameBitmapRgbaUnormPacked1010102 { - pub data: Box<[u32]>, +pub struct FrameBitmapArgbUnormPacked2101010<Data: BitmapDataArgbUnormPacked2101010> { + pub data: Data, pub width: usize, pub height: usize, } +/// Bitmap data in the RgbaF16x4 format +pub trait BitmapDataRgbaF16x4: Sized + AsRef<[[f16; 4]]> {} +impl<T: Sized + AsRef<[[f16; 4]]> + AsMut<[[f16; 4]]>> BitmapDataRgbaF16x4 for T {} + /// A RgbaF16x4 format bitmap -pub struct FrameBitmapRgbaF16x4 { - pub data: Box<[[f16; 4]]>, +pub struct FrameBitmapRgbaF16x4<Data: BitmapDataRgbaF16x4> { + pub data: Data, pub width: usize, pub height: usize, } @@ -338,34 +925,139 @@

    Files

    Full, } +/// Bitmap data in the Luma/u8 format +pub trait BitmapDataLuma: Sized + AsRef<[u8]> {} +impl<T: Sized + AsRef<[u8]> + AsMut<[u8]>> BitmapDataLuma for T {} + +/// Bitmap data in the CbCr Chroma/u8x2 format +pub trait BitmapDataChroma: Sized + AsRef<[[u8; 2]]> {} +impl<T: Sized + AsRef<[[u8; 2]]> + AsMut<[[u8; 2]]>> BitmapDataChroma for T {} + /// A YCbCr image, corresponding to either V420 or F420 pixel formats. /// /// Dual-planar, with luminance (Y) in one plane, and chrominance (CbCr) in another. /// Note that each plane may have a different size, as with V420 format, where /// the chroma plane is 2 by 2 blocks, but luma is per-pixel -pub struct FrameBitmapYCbCr { - pub luma_data: Box<[u8]>, +pub struct FrameBitmapYCbCr<LumaData: BitmapDataLuma, ChromaData: BitmapDataChroma> { + pub luma_data: LumaData, pub luma_width: usize, pub luma_height: usize, - pub chroma_data: Box<[[u8; 2]]>, + pub chroma_data: ChromaData, pub chroma_width: usize, pub chroma_height: usize, pub range: VideoRange, } /// A bitmap image of the selected format -pub enum FrameBitmap { - BgraUnorm8x4(FrameBitmapBgraUnorm8x4), - RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102), - RgbaF16x4(FrameBitmapRgbaF16x4), - YCbCr(FrameBitmapYCbCr), +pub enum FrameBitmap<DataBgra: BitmapDataBgra8x4, DataArgbPacked: BitmapDataArgbUnormPacked2101010, DataRgbaF16: BitmapDataRgbaF16x4, DataLuma: BitmapDataLuma, DataChroma: BitmapDataChroma> { + BgraUnorm8x4(FrameBitmapBgraUnorm8x4<DataBgra>), + ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<DataArgbPacked>), + RgbaF16x4(FrameBitmapRgbaF16x4<DataRgbaF16>), + YCbCr(FrameBitmapYCbCr<DataLuma, DataChroma>), +} + +/// A Bitmap with boxed-slice image data +pub type BoxedSliceFrameBitmap = FrameBitmap< + // Bgra8888 + Box<[[u8; 4]]>, + // ArgbPacked2101010 + Box<[u32]>, + // RgbaF16x4 + Box<[[f16; 4]]>, + // Luma + Box<[u8]>, + // Chroma + Box<[[u8; 2]]> +>; + +/// A bitmap with booled images as bitmap data +pub type PooledFrameBitmap = FrameBitmap< + // Bgra8888 + PooledBitmap<[u8; 4]>, + // ArgbPacked2101010 + PooledBitmap<u32>, + // RgbaF16x4 + PooledBitmap<[f16; 4]>, + // Luma + PooledBitmap<u8>, + // Chroma + PooledBitmap<[u8; 2]>, +>; + +/// A pool of frame bitmaps +pub struct FrameBitmapPool { + bgra_u8x4: Arc<BitmapPool<[u8; 4]>>, + argb_packed_2101010: Arc<BitmapPool<u32>>, + rgba_f16x4: Arc<BitmapPool<[f16; 4]>>, + luma: Arc<BitmapPool<u8>>, + chroma: Arc<BitmapPool<[u8; 2]>>, +} + +impl FrameBitmapPool { + /// Create a new bitmap pool with an initial `capacity` and `resolution` for the given `format`, limited to `max` pooled bitmaps + pub fn new_with_initial_capacity(capacity: usize, initial_resolution: (usize, usize), max: usize, format: CapturePixelFormat) -> Self { + Self { + bgra_u8x4: BitmapPool::new( + if format == CapturePixelFormat::Bgra8888 { capacity } else { 0 }, + max, + initial_resolution + ), + argb_packed_2101010: BitmapPool::new( + if format == CapturePixelFormat::Argb2101010 { capacity } else { 0 }, + max, + initial_resolution + ), + rgba_f16x4: BitmapPool::new( + 0, + max, + initial_resolution + ), + luma: BitmapPool::new( + if format == CapturePixelFormat::F420 || format == CapturePixelFormat::V420 { capacity } else { 0 }, + max, + initial_resolution + ), + chroma: BitmapPool::new( + if format == CapturePixelFormat::F420 || format == CapturePixelFormat::V420 { capacity } else { 0 }, + max, + initial_resolution + ) + } + } + + /// Create a new frame bitmap pool, limited to `max` pooled bitmaps + pub fn new(max: usize) -> Self { + Self { + bgra_u8x4: BitmapPool::new(0, max, (0, 0)), + argb_packed_2101010: BitmapPool::new(0, max, (0, 0)), + rgba_f16x4: BitmapPool::new(0, max, (0, 0)), + luma: BitmapPool::new(0, max, (0, 0)), + chroma: BitmapPool::new(0, max, (0, 0)), + } + } + + /// Free all pooled bitmaps - this happens automatically on `drop()`, but you can free them ahead of time if you need to. + pub fn free_pooled(&self) { + self.bgra_u8x4.free_pooled(); + self.argb_packed_2101010.free_pooled(); + self.rgba_f16x4.free_pooled(); + self.luma.free_pooled(); + self.chroma.free_pooled(); + } } /// A video frame which can produce a bitmap pub trait VideoFrameBitmap { /// Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, /// and is an expensive operation. - fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>; + fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>; + + /// Try and get a pooled bitmap using the given bitmap pool, and return Ok(None) if there are no pooled bitmaps available + /// and `max` pooled bitmaps exist + fn try_get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>; + + /// Get a pooled bitmap, waiting for one to become available if `max` pooled bitmaps are checked out + fn get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<PooledFrameBitmap, VideoFrameBitmapError>; } #[derive(Clone, Debug)] @@ -396,8 +1088,28 @@

    Files

    } } -impl VideoFrameBitmap for VideoFrame { - fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError> { +#[derive(Copy, Clone)] +struct VideoFramePlanePtr { + ptr: *const c_void, + width: usize, + height: usize, + bytes_per_row: usize, +} + +enum VideoFrameDataCopyPtrs { + Bgra8888(VideoFramePlanePtr), + ArgbPacked2101010(VideoFramePlanePtr), + RgbaF16x4(VideoFramePlanePtr), + F420{luma: VideoFramePlanePtr, chroma: VideoFramePlanePtr}, + V420{luma: VideoFramePlanePtr, chroma: VideoFramePlanePtr}, +} + +trait VideoFrameBitmapInternal { + fn get_bitmap_internal<T>(&self, output_mapping: &impl Fn(VideoFrameDataCopyPtrs) -> Result<T, VideoFrameBitmapError>) -> Result<T, VideoFrameBitmapError>; +} + +impl VideoFrameBitmapInternal for VideoFrame { + fn get_bitmap_internal<T>(&self, output_mapping: &impl Fn(VideoFrameDataCopyPtrs) -> Result<T, VideoFrameBitmapError>) -> Result<T, VideoFrameBitmapError> { #[cfg(target_os = "windows")] { let (width, height) = self.impl_video_frame.frame_size; @@ -440,34 +1152,36 @@

    Files

    map_result.map_err(|_| VideoFrameBitmapError::Other("Couldn't map staging texture".to_string()))?; match pixel_format { DirectXPixelFormat::B8G8R8A8UIntNormalized => { - let mut image_data = vec![[0u8; 4]; width * height]; let bpr = mapped_resource.RowPitch as usize; - let surface_slice = std::slice::from_raw_parts(mapped_resource.pData as *const u8, bpr * height); - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, [u8; 4]>(&surface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - let _ = device.Unmap(&staging_texture, 0); - Ok(FrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: mapped_resource.pData as *const c_void, width, height, - })) + bytes_per_row: bpr + }; + + let mapping_result = output_mapping(VideoFrameDataCopyPtrs::Bgra8888(plane_ptr)); + + let _ = device.Unmap(&staging_texture, 0); + + mapping_result }, DirectXPixelFormat::R10G10B10A2UIntNormalized => { - let mut image_data = vec![0u32; width * height]; let bpr = mapped_resource.RowPitch as usize; - let surface_slice = std::slice::from_raw_parts(mapped_resource.pData as *const u8, bpr * height); - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, u32>(&surface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - let _ = device.Unmap(&staging_texture, 0); - Ok(FrameBitmap::RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: mapped_resource.pData as *const c_void, width, height, - })) + bytes_per_row: bpr + }; + + let mapping_result = output_mapping(VideoFrameDataCopyPtrs::ArgbPacked2101010(plane_ptr)); + + let _ = device.Unmap(&staging_texture, 0); + + mapping_result }, _ => { Err(VideoFrameBitmapError::Other("Unknown or unsupported pixel format on DXGISurface".to_string())) @@ -497,18 +1211,16 @@

    Files

    let bpr = iosurface.get_bytes_per_row(); let height = iosurface.get_height(); let width = iosurface.get_width(); - let mut image_data = vec![[0; 4]; width * height]; let base_address = lock_gaurd.get_base_address().ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let iosurface_slice = unsafe { std::slice::from_raw_parts(base_address as *const u8, bpr * height) }; - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, [u8; 4]>(&iosurface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - Ok(FrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: base_address, width, height, - })) + bytes_per_row: bpr + }; + + output_mapping(VideoFrameDataCopyPtrs::Bgra8888(plane_ptr)) }, Some(CVPixelFormat::V420) | Some(CVPixelFormat::F420) => { @@ -516,37 +1228,32 @@

    Files

    let luma_bpr = iosurface.get_bytes_per_row_of_plane(0); let luma_height = iosurface.get_height_of_plane(0); let luma_width = iosurface.get_width_of_plane(0); - - let mut luma_image_data = vec![0u8; luma_width * luma_height]; let luma_base_address = lock_gaurd.get_base_address_of_plane(0).ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let luma_iosurface_slice = unsafe { std::slice::from_raw_parts(luma_base_address as *const u8, luma_bpr * luma_height) }; - for y in 0..luma_height { - let luma_source_slice = &luma_iosurface_slice[(luma_bpr * y)..(luma_bpr * y + luma_width)]; - luma_image_data[(luma_width * y)..(luma_width * y + luma_width)].copy_from_slice(luma_source_slice); - } + let luma_plane_ptr = VideoFramePlanePtr { + ptr: luma_base_address, + width: luma_width, + height: luma_height, + bytes_per_row: luma_bpr, + }; let chroma_bpr = iosurface.get_bytes_per_row_of_plane(1); let chroma_height = iosurface.get_height_of_plane(1); let chroma_width = iosurface.get_width_of_plane(1); - let mut chroma_image_data = vec![[0u8; 2]; chroma_width * chroma_height]; let chroma_base_address = lock_gaurd.get_base_address_of_plane(1).ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let chroma_iosurface_slice = unsafe { std::slice::from_raw_parts(chroma_base_address as *const u8, chroma_bpr * chroma_height) }; - for y in 0..chroma_height { - let chroma_source_slice = bytemuck::cast_slice::<_, [u8; 2]>(&chroma_iosurface_slice[(chroma_bpr * y)..(chroma_bpr * y + 2 * chroma_width)]); - chroma_image_data[(chroma_width * y)..(chroma_width * y + chroma_width)].copy_from_slice(chroma_source_slice); - } + let chroma_plane_ptr = VideoFramePlanePtr { + ptr: chroma_base_address, + width: chroma_width, + height: chroma_height, + bytes_per_row: chroma_bpr, + }; - Ok(FrameBitmap::YCbCr(FrameBitmapYCbCr { - luma_data: luma_image_data.into_boxed_slice(), - chroma_data: chroma_image_data.into_boxed_slice(), - luma_width, - luma_height, - chroma_width, - chroma_height, - range: if pixel_format == Some(CVPixelFormat::F420) { VideoRange::Full } else { VideoRange::Video } - })) + if pixel_format == Some(CVPixelFormat::V420) { + output_mapping(VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr }) + } else { + output_mapping(VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr }) + } }, _ => Err(VideoFrameBitmapError::Other("Unknown pixel format on iosurface".to_string())) } @@ -557,5 +1264,208 @@

    Files

    } } +fn copy_boxed_slice_plane<T: Sized + Copy + Pod + Zeroable>(plane_ptr: VideoFramePlanePtr) -> Box<[T]> { + let mut image_data = vec![T::zeroed(); plane_ptr.width * plane_ptr.height]; + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::<T>() * plane_ptr.width)]); + image_data[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + image_data.into_boxed_slice() +} + +fn copy_pooled_plane<T: Sized + Copy + Pod + Zeroable>(plane_ptr: VideoFramePlanePtr, pool: &Arc<BitmapPool<T>>) -> PooledBitmap<T> { + let mut bitmap = pool.get_bitmap((plane_ptr.width, plane_ptr.height)); + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::<T>() * plane_ptr.width)]); + AsMut::as_mut(&mut bitmap)[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + bitmap +} + +fn try_copy_pooled_plane<T: Sized + Copy + Pod + Zeroable>(plane_ptr: VideoFramePlanePtr, pool: &Arc<BitmapPool<T>>) -> Option<PooledBitmap<T>> { + let mut bitmap = pool.try_get_bitmap((plane_ptr.width, plane_ptr.height))?; + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::<T>() * plane_ptr.width)]); + AsMut::as_mut(&mut bitmap)[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + Some(bitmap) +} + +impl VideoFrameBitmap for VideoFrame { + fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError> { + self.get_bitmap_internal::<BoxedSliceFrameBitmap>(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data: copy_boxed_slice_plane(bgra_plane_ptr), + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data: copy_boxed_slice_plane(argb_plane_ptr), + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(BoxedSliceFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_boxed_slice_plane(luma_plane_ptr), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_boxed_slice_plane(chroma_plane_ptr), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + })) + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(BoxedSliceFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_boxed_slice_plane(luma_plane_ptr), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_boxed_slice_plane(chroma_plane_ptr), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + })) + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data: copy_boxed_slice_plane(rgba_plane_ptr), + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + })) + } + } + }) + } + + fn get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<PooledFrameBitmap, VideoFrameBitmapError> { + self.get_bitmap_internal::<PooledFrameBitmap>(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + Ok(PooledFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data: copy_pooled_plane(bgra_plane_ptr, &bitmap_pool.bgra_u8x4), + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + Ok(PooledFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data: copy_pooled_plane(argb_plane_ptr, &bitmap_pool.argb_packed_2101010), + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + })) + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + })) + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + Ok(PooledFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data: copy_pooled_plane(rgba_plane_ptr, &bitmap_pool.rgba_f16x4), + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + })) + } + } + }) + } + + fn try_get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError> { + self.get_bitmap_internal::<Option<PooledFrameBitmap>>(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(bgra_plane_ptr, &bitmap_pool.bgra_u8x4) { + Ok(Some(PooledFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data, + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(argb_plane_ptr, &bitmap_pool.argb_packed_2101010) { + Ok(Some(PooledFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data, + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + if let (Some(luma_data), Some(chroma_data)) = (try_copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), try_copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma)) { + Ok(Some(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data, + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data, + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + }))) + } else { + Ok(None) + } + + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + if let (Some(luma_data), Some(chroma_data)) = (try_copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), try_copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma)) { + Ok(Some(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data, + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data, + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(rgba_plane_ptr, &bitmap_pool.rgba_f16x4) { + Ok(Some(PooledFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data, + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + }))) + } else { + Ok(None) + } + } + } + }) + } +} +
    \ No newline at end of file diff --git a/docs/macos_docs/src/crabgrab/feature/iosurface/mod.rs.html b/docs/macos_docs/src/crabgrab/feature/iosurface/mod.rs.html index 234efba3..1411236a 100644 --- a/docs/macos_docs/src/crabgrab/feature/iosurface/mod.rs.html +++ b/docs/macos_docs/src/crabgrab/feature/iosurface/mod.rs.html @@ -1,6 +1,4 @@ -mod.rs - source -
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/feature/metal/mod.rs.html b/docs/macos_docs/src/crabgrab/feature/metal/mod.rs.html
    index f7823753..34c4e851 100644
    --- a/docs/macos_docs/src/crabgrab/feature/metal/mod.rs.html
    +++ b/docs/macos_docs/src/crabgrab/feature/metal/mod.rs.html
    @@ -1,6 +1,4 @@
    -mod.rs - source
    -    
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/feature/mod.rs.html b/docs/macos_docs/src/crabgrab/feature/mod.rs.html
    index 9bc39b34..a0d16811 100644
    --- a/docs/macos_docs/src/crabgrab/feature/mod.rs.html
    +++ b/docs/macos_docs/src/crabgrab/feature/mod.rs.html
    @@ -1,6 +1,4 @@
    -mod.rs - source
    -    
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/feature/screenshot/mod.rs.html b/docs/macos_docs/src/crabgrab/feature/screenshot/mod.rs.html
    index 9b5ba64b..9f3eb9d1 100644
    --- a/docs/macos_docs/src/crabgrab/feature/screenshot/mod.rs.html
    +++ b/docs/macos_docs/src/crabgrab/feature/screenshot/mod.rs.html
    @@ -1,6 +1,4 @@
    -mod.rs - source
    -    
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/feature/screenshot/platform/macos.rs.html b/docs/macos_docs/src/crabgrab/feature/screenshot/platform/macos.rs.html
    index 48c4dcde..5a2ef4a1 100644
    --- a/docs/macos_docs/src/crabgrab/feature/screenshot/platform/macos.rs.html
    +++ b/docs/macos_docs/src/crabgrab/feature/screenshot/platform/macos.rs.html
    @@ -1,6 +1,4 @@
    -macos.rs - source
    -    
    1
    +macos.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/feature/screenshot/platform/mod.rs.html b/docs/macos_docs/src/crabgrab/feature/screenshot/platform/mod.rs.html
    index 4a4b826c..9a9ce636 100644
    --- a/docs/macos_docs/src/crabgrab/feature/screenshot/platform/mod.rs.html
    +++ b/docs/macos_docs/src/crabgrab/feature/screenshot/platform/mod.rs.html
    @@ -1,6 +1,4 @@
    -mod.rs - source
    -    
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/feature/wgpu/mod.rs.html b/docs/macos_docs/src/crabgrab/feature/wgpu/mod.rs.html
    index bf6644d7..f09c58be 100644
    --- a/docs/macos_docs/src/crabgrab/feature/wgpu/mod.rs.html
    +++ b/docs/macos_docs/src/crabgrab/feature/wgpu/mod.rs.html
    @@ -1,6 +1,4 @@
    -mod.rs - source
    -    
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/frame.rs.html b/docs/macos_docs/src/crabgrab/frame.rs.html
    index 208ff368..ece42749 100644
    --- a/docs/macos_docs/src/crabgrab/frame.rs.html
    +++ b/docs/macos_docs/src/crabgrab/frame.rs.html
    @@ -1,6 +1,4 @@
    -frame.rs - source
    -    
    1
    +frame.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/lib.rs.html b/docs/macos_docs/src/crabgrab/lib.rs.html
    index 3f8d7696..598b215b 100644
    --- a/docs/macos_docs/src/crabgrab/lib.rs.html
    +++ b/docs/macos_docs/src/crabgrab/lib.rs.html
    @@ -1,6 +1,4 @@
    -lib.rs - source
    -    
    1
    +lib.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/platform/macos/capturable_content.rs.html b/docs/macos_docs/src/crabgrab/platform/macos/capturable_content.rs.html
    index a9ca3f2c..210c7ca3 100644
    --- a/docs/macos_docs/src/crabgrab/platform/macos/capturable_content.rs.html
    +++ b/docs/macos_docs/src/crabgrab/platform/macos/capturable_content.rs.html
    @@ -1,6 +1,4 @@
    -capturable_content.rs - source
    -    
    1
    +capturable_content.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/platform/macos/capture_stream.rs.html b/docs/macos_docs/src/crabgrab/platform/macos/capture_stream.rs.html
    index 5c6655ad..003f2d74 100644
    --- a/docs/macos_docs/src/crabgrab/platform/macos/capture_stream.rs.html
    +++ b/docs/macos_docs/src/crabgrab/platform/macos/capture_stream.rs.html
    @@ -1,6 +1,4 @@
    -capture_stream.rs - source
    -    
    1
    +capture_stream.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/platform/macos/frame.rs.html b/docs/macos_docs/src/crabgrab/platform/macos/frame.rs.html
    index a6260643..f306ea75 100644
    --- a/docs/macos_docs/src/crabgrab/platform/macos/frame.rs.html
    +++ b/docs/macos_docs/src/crabgrab/platform/macos/frame.rs.html
    @@ -1,6 +1,4 @@
    -frame.rs - source
    -    
    1
    +frame.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/platform/macos/mod.rs.html b/docs/macos_docs/src/crabgrab/platform/macos/mod.rs.html
    index 3ada02f9..97d5b6cf 100644
    --- a/docs/macos_docs/src/crabgrab/platform/macos/mod.rs.html
    +++ b/docs/macos_docs/src/crabgrab/platform/macos/mod.rs.html
    @@ -1,6 +1,4 @@
    -mod.rs - source
    -    
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/platform/macos/objc_wrap.rs.html b/docs/macos_docs/src/crabgrab/platform/macos/objc_wrap.rs.html
    index 6e6b3d7d..151ca724 100644
    --- a/docs/macos_docs/src/crabgrab/platform/macos/objc_wrap.rs.html
    +++ b/docs/macos_docs/src/crabgrab/platform/macos/objc_wrap.rs.html
    @@ -1,6 +1,4 @@
    -objc_wrap.rs - source
    -    
    1
    +objc_wrap.rs - source
    1
     2
     3
     4
    @@ -6755,7 +6753,7 @@ 

    Files

    unsafe { CGWindowLevelForKey(key) } } -lazy_static! { +lazy_static! { static ref WINDOW_LEVELS: WindowLevels = { WindowLevels { base : get_window_level_for_key(kCGBaseWindowLevelKey), diff --git a/docs/macos_docs/src/crabgrab/platform/mod.rs.html b/docs/macos_docs/src/crabgrab/platform/mod.rs.html index 83757167..40617287 100644 --- a/docs/macos_docs/src/crabgrab/platform/mod.rs.html +++ b/docs/macos_docs/src/crabgrab/platform/mod.rs.html @@ -1,6 +1,4 @@ -mod.rs - source -
    1
    +mod.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/prelude.rs.html b/docs/macos_docs/src/crabgrab/prelude.rs.html
    index 5bc423d0..21e07270 100644
    --- a/docs/macos_docs/src/crabgrab/prelude.rs.html
    +++ b/docs/macos_docs/src/crabgrab/prelude.rs.html
    @@ -1,6 +1,4 @@
    -prelude.rs - source
    -    
    1
    +prelude.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/src/crabgrab/util.rs.html b/docs/macos_docs/src/crabgrab/util.rs.html
    index ed74cffc..bb686f7b 100644
    --- a/docs/macos_docs/src/crabgrab/util.rs.html
    +++ b/docs/macos_docs/src/crabgrab/util.rs.html
    @@ -1,6 +1,4 @@
    -util.rs - source
    -    
    1
    +util.rs - source
    1
     2
     3
     4
    diff --git a/docs/macos_docs/static.files/clipboard-24048e6d87f63d07.svg b/docs/macos_docs/static.files/clipboard-24048e6d87f63d07.svg
    new file mode 100644
    index 00000000..e437c83f
    --- /dev/null
    +++ b/docs/macos_docs/static.files/clipboard-24048e6d87f63d07.svg
    @@ -0,0 +1 @@
    +
    diff --git a/docs/macos_docs/static.files/main-20a3ad099b048cf2.js b/docs/macos_docs/static.files/main-20a3ad099b048cf2.js
    new file mode 100644
    index 00000000..133116e4
    --- /dev/null
    +++ b/docs/macos_docs/static.files/main-20a3ad099b048cf2.js
    @@ -0,0 +1,11 @@
    +"use strict";window.RUSTDOC_TOOLTIP_HOVER_MS=300;window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS=450;function resourcePath(basename,extension){return getVar("root-path")+basename+getVar("resource-suffix")+extension}function hideMain(){addClass(document.getElementById(MAIN_ID),"hidden")}function showMain(){removeClass(document.getElementById(MAIN_ID),"hidden")}function blurHandler(event,parentElem,hideCallback){if(!parentElem.contains(document.activeElement)&&!parentElem.contains(event.relatedTarget)){hideCallback()}}window.rootPath=getVar("root-path");window.currentCrate=getVar("current-crate");function setMobileTopbar(){const mobileTopbar=document.querySelector(".mobile-topbar");const locationTitle=document.querySelector(".sidebar h2.location");if(mobileTopbar){const mobileTitle=document.createElement("h2");mobileTitle.className="location";if(hasClass(document.querySelector(".rustdoc"),"crate")){mobileTitle.innerHTML=`Crate ${window.currentCrate}`}else if(locationTitle){mobileTitle.innerHTML=locationTitle.innerHTML}mobileTopbar.appendChild(mobileTitle)}}function getVirtualKey(ev){if("key"in ev&&typeof ev.key!=="undefined"){return ev.key}const c=ev.charCode||ev.keyCode;if(c===27){return"Escape"}return String.fromCharCode(c)}const MAIN_ID="main-content";const SETTINGS_BUTTON_ID="settings-menu";const ALTERNATIVE_DISPLAY_ID="alternative-display";const NOT_DISPLAYED_ID="not-displayed";const HELP_BUTTON_ID="help-button";function getSettingsButton(){return document.getElementById(SETTINGS_BUTTON_ID)}function getHelpButton(){return document.getElementById(HELP_BUTTON_ID)}function getNakedUrl(){return window.location.href.split("?")[0].split("#")[0]}function insertAfter(newNode,referenceNode){referenceNode.parentNode.insertBefore(newNode,referenceNode.nextSibling)}function getOrCreateSection(id,classes){let el=document.getElementById(id);if(!el){el=document.createElement("section");el.id=id;el.className=classes;insertAfter(el,document.getElementById(MAIN_ID))}return el}function getAlternativeDisplayElem(){return getOrCreateSection(ALTERNATIVE_DISPLAY_ID,"content hidden")}function getNotDisplayedElem(){return getOrCreateSection(NOT_DISPLAYED_ID,"hidden")}function switchDisplayedElement(elemToDisplay){const el=getAlternativeDisplayElem();if(el.children.length>0){getNotDisplayedElem().appendChild(el.firstElementChild)}if(elemToDisplay===null){addClass(el,"hidden");showMain();return}el.appendChild(elemToDisplay);hideMain();removeClass(el,"hidden")}function browserSupportsHistoryApi(){return window.history&&typeof window.history.pushState==="function"}function preLoadCss(cssUrl){const link=document.createElement("link");link.href=cssUrl;link.rel="preload";link.as="style";document.getElementsByTagName("head")[0].appendChild(link)}(function(){const isHelpPage=window.location.pathname.endsWith("/help.html");function loadScript(url,errorCallback){const script=document.createElement("script");script.src=url;if(errorCallback!==undefined){script.onerror=errorCallback}document.head.append(script)}getSettingsButton().onclick=event=>{if(event.ctrlKey||event.altKey||event.metaKey){return}window.hideAllModals(false);addClass(getSettingsButton(),"rotate");event.preventDefault();loadScript(getVar("static-root-path")+getVar("settings-js"));setTimeout(()=>{const themes=getVar("themes").split(",");for(const theme of themes){if(theme!==""){preLoadCss(getVar("root-path")+theme+".css")}}},0)};window.searchState={loadingText:"Loading search results...",input:document.getElementsByClassName("search-input")[0],outputElement:()=>{let el=document.getElementById("search");if(!el){el=document.createElement("section");el.id="search";getNotDisplayedElem().appendChild(el)}return el},title:document.title,titleBeforeSearch:document.title,timeout:null,currentTab:0,focusedByTab:[null,null,null],clearInputTimeout:()=>{if(searchState.timeout!==null){clearTimeout(searchState.timeout);searchState.timeout=null}},isDisplayed:()=>searchState.outputElement().parentElement.id===ALTERNATIVE_DISPLAY_ID,focus:()=>{searchState.input.focus()},defocus:()=>{searchState.input.blur()},showResults:search=>{if(search===null||typeof search==="undefined"){search=searchState.outputElement()}switchDisplayedElement(search);searchState.mouseMovedAfterSearch=false;document.title=searchState.title},removeQueryParameters:()=>{document.title=searchState.titleBeforeSearch;if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.hash)}},hideResults:()=>{switchDisplayedElement(null);searchState.removeQueryParameters()},getQueryStringParams:()=>{const params={};window.location.search.substring(1).split("&").map(s=>{const pair=s.split("=").map(x=>x.replace(/\+/g," "));params[decodeURIComponent(pair[0])]=typeof pair[1]==="undefined"?null:decodeURIComponent(pair[1])});return params},setup:()=>{const search_input=searchState.input;if(!searchState.input){return}let searchLoaded=false;function sendSearchForm(){document.getElementsByClassName("search-form")[0].submit()}function loadSearch(){if(!searchLoaded){searchLoaded=true;loadScript(getVar("static-root-path")+getVar("search-js"),sendSearchForm);loadScript(resourcePath("search-index",".js"),sendSearchForm)}}search_input.addEventListener("focus",()=>{search_input.origPlaceholder=search_input.placeholder;search_input.placeholder="Type your search here.";loadSearch()});if(search_input.value!==""){loadSearch()}const params=searchState.getQueryStringParams();if(params.search!==undefined){searchState.setLoadingSearch();loadSearch()}},setLoadingSearch:()=>{const search=searchState.outputElement();search.innerHTML="

    "+searchState.loadingText+"

    ";searchState.showResults(search)},descShards:new Map(),loadDesc:async function({descShard,descIndex}){if(descShard.promise===null){descShard.promise=new Promise((resolve,reject)=>{descShard.resolve=resolve;const ds=descShard;const fname=`${ds.crate}-desc-${ds.shard}-`;const url=resourcePath(`search.desc/${descShard.crate}/${fname}`,".js",);loadScript(url,reject)})}const list=await descShard.promise;return list[descIndex]},loadedDescShard:function(crate,shard,data){this.descShards.get(crate)[shard].resolve(data.split("\n"))},};const toggleAllDocsId="toggle-all-docs";let savedHash="";function handleHashes(ev){if(ev!==null&&searchState.isDisplayed()&&ev.newURL){switchDisplayedElement(null);const hash=ev.newURL.slice(ev.newURL.indexOf("#")+1);if(browserSupportsHistoryApi()){history.replaceState(null,"",getNakedUrl()+window.location.search+"#"+hash)}const elem=document.getElementById(hash);if(elem){elem.scrollIntoView()}}const pageId=window.location.hash.replace(/^#/,"");if(savedHash!==pageId){savedHash=pageId;if(pageId!==""){expandSection(pageId)}}if(savedHash.startsWith("impl-")){const splitAt=savedHash.indexOf("/");if(splitAt!==-1){const implId=savedHash.slice(0,splitAt);const assocId=savedHash.slice(splitAt+1);const implElem=document.getElementById(implId);if(implElem&&implElem.parentElement.tagName==="SUMMARY"&&implElem.parentElement.parentElement.tagName==="DETAILS"){onEachLazy(implElem.parentElement.parentElement.querySelectorAll(`[id^="${assocId}"]`),item=>{const numbered=/([^-]+)-([0-9]+)/.exec(item.id);if(item.id===assocId||(numbered&&numbered[1]===assocId)){openParentDetails(item);item.scrollIntoView();setTimeout(()=>{window.location.replace("#"+item.id)},0)}},)}}}}function onHashChange(ev){hideSidebar();handleHashes(ev)}function openParentDetails(elem){while(elem){if(elem.tagName==="DETAILS"){elem.open=true}elem=elem.parentNode}}function expandSection(id){openParentDetails(document.getElementById(id))}function handleEscape(ev){searchState.clearInputTimeout();searchState.hideResults();ev.preventDefault();searchState.defocus();window.hideAllModals(true)}function handleShortcut(ev){const disableShortcuts=getSettingValue("disable-shortcuts")==="true";if(ev.ctrlKey||ev.altKey||ev.metaKey||disableShortcuts){return}if(document.activeElement.tagName==="INPUT"&&document.activeElement.type!=="checkbox"&&document.activeElement.type!=="radio"){switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break}}else{switch(getVirtualKey(ev)){case"Escape":handleEscape(ev);break;case"s":case"S":case"/":ev.preventDefault();searchState.focus();break;case"+":ev.preventDefault();expandAllDocs();break;case"-":ev.preventDefault();collapseAllDocs();break;case"?":showHelp();break;default:break}}}document.addEventListener("keypress",handleShortcut);document.addEventListener("keydown",handleShortcut);function addSidebarItems(){if(!window.SIDEBAR_ITEMS){return}const sidebar=document.getElementsByClassName("sidebar-elems")[0];function block(shortty,id,longty){const filtered=window.SIDEBAR_ITEMS[shortty];if(!filtered){return}const modpath=hasClass(document.querySelector(".rustdoc"),"mod")?"../":"";const h3=document.createElement("h3");h3.innerHTML=`${longty}`;const ul=document.createElement("ul");ul.className="block "+shortty;for(const name of filtered){let path;if(shortty==="mod"){path=`${modpath}${name}/index.html`}else{path=`${modpath}${shortty}.${name}.html`}let current_page=document.location.href.toString();if(current_page.endsWith("/")){current_page+="index.html"}const link=document.createElement("a");link.href=path;if(path===current_page){link.className="current"}link.textContent=name;const li=document.createElement("li");li.appendChild(link);ul.appendChild(li)}sidebar.appendChild(h3);sidebar.appendChild(ul)}if(sidebar){block("primitive","primitives","Primitive Types");block("mod","modules","Modules");block("macro","macros","Macros");block("struct","structs","Structs");block("enum","enums","Enums");block("constant","constants","Constants");block("static","static","Statics");block("trait","traits","Traits");block("fn","functions","Functions");block("type","types","Type Aliases");block("union","unions","Unions");block("foreigntype","foreign-types","Foreign Types");block("keyword","keywords","Keywords");block("opaque","opaque-types","Opaque Types");block("attr","attributes","Attribute Macros");block("derive","derives","Derive Macros");block("traitalias","trait-aliases","Trait Aliases")}}window.register_implementors=imp=>{const implementors=document.getElementById("implementors-list");const synthetic_implementors=document.getElementById("synthetic-implementors-list");const inlined_types=new Set();const TEXT_IDX=0;const SYNTHETIC_IDX=1;const TYPES_IDX=2;if(synthetic_implementors){onEachLazy(synthetic_implementors.getElementsByClassName("impl"),el=>{const aliases=el.getAttribute("data-aliases");if(!aliases){return}aliases.split(",").forEach(alias=>{inlined_types.add(alias)})})}let currentNbImpls=implementors.getElementsByClassName("impl").length;const traitName=document.querySelector(".main-heading h1 > .trait").textContent;const baseIdName="impl-"+traitName+"-";const libs=Object.getOwnPropertyNames(imp);const script=document.querySelector("script[data-ignore-extern-crates]");const ignoreExternCrates=new Set((script?script.getAttribute("data-ignore-extern-crates"):"").split(","),);for(const lib of libs){if(lib===window.currentCrate||ignoreExternCrates.has(lib)){continue}const structs=imp[lib];struct_loop:for(const struct of structs){const list=struct[SYNTHETIC_IDX]?synthetic_implementors:implementors;if(struct[SYNTHETIC_IDX]){for(const struct_type of struct[TYPES_IDX]){if(inlined_types.has(struct_type)){continue struct_loop}inlined_types.add(struct_type)}}const code=document.createElement("h3");code.innerHTML=struct[TEXT_IDX];addClass(code,"code-header");onEachLazy(code.getElementsByTagName("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});const currentId=baseIdName+currentNbImpls;const anchor=document.createElement("a");anchor.href="#"+currentId;addClass(anchor,"anchor");const display=document.createElement("div");display.id=currentId;addClass(display,"impl");display.appendChild(anchor);display.appendChild(code);list.appendChild(display);currentNbImpls+=1}}};if(window.pending_implementors){window.register_implementors(window.pending_implementors)}window.register_type_impls=imp=>{if(!imp||!imp[window.currentCrate]){return}window.pending_type_impls=null;const idMap=new Map();let implementations=document.getElementById("implementations-list");let trait_implementations=document.getElementById("trait-implementations-list");let trait_implementations_header=document.getElementById("trait-implementations");const script=document.querySelector("script[data-self-path]");const selfPath=script?script.getAttribute("data-self-path"):null;const mainContent=document.querySelector("#main-content");const sidebarSection=document.querySelector(".sidebar section");let methods=document.querySelector(".sidebar .block.method");let associatedTypes=document.querySelector(".sidebar .block.associatedtype");let associatedConstants=document.querySelector(".sidebar .block.associatedconstant");let sidebarTraitList=document.querySelector(".sidebar .block.trait-implementation");for(const impList of imp[window.currentCrate]){const types=impList.slice(2);const text=impList[0];const isTrait=impList[1]!==0;const traitName=impList[1];if(types.indexOf(selfPath)===-1){continue}let outputList=isTrait?trait_implementations:implementations;if(outputList===null){const outputListName=isTrait?"Trait Implementations":"Implementations";const outputListId=isTrait?"trait-implementations-list":"implementations-list";const outputListHeaderId=isTrait?"trait-implementations":"implementations";const outputListHeader=document.createElement("h2");outputListHeader.id=outputListHeaderId;outputListHeader.innerText=outputListName;outputList=document.createElement("div");outputList.id=outputListId;if(isTrait){const link=document.createElement("a");link.href=`#${outputListHeaderId}`;link.innerText="Trait Implementations";const h=document.createElement("h3");h.appendChild(link);trait_implementations=outputList;trait_implementations_header=outputListHeader;sidebarSection.appendChild(h);sidebarTraitList=document.createElement("ul");sidebarTraitList.className="block trait-implementation";sidebarSection.appendChild(sidebarTraitList);mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}else{implementations=outputList;if(trait_implementations){mainContent.insertBefore(outputListHeader,trait_implementations_header);mainContent.insertBefore(outputList,trait_implementations_header)}else{const mainContent=document.querySelector("#main-content");mainContent.appendChild(outputListHeader);mainContent.appendChild(outputList)}}}const template=document.createElement("template");template.innerHTML=text;onEachLazy(template.content.querySelectorAll("a"),elem=>{const href=elem.getAttribute("href");if(href&&!href.startsWith("#")&&!/^(?:[a-z+]+:)?\/\//.test(href)){elem.setAttribute("href",window.rootPath+href)}});onEachLazy(template.content.querySelectorAll("[id]"),el=>{let i=0;if(idMap.has(el.id)){i=idMap.get(el.id)}else if(document.getElementById(el.id)){i=1;while(document.getElementById(`${el.id}-${2 * i}`)){i=2*i}while(document.getElementById(`${el.id}-${i}`)){i+=1}}if(i!==0){const oldHref=`#${el.id}`;const newHref=`#${el.id}-${i}`;el.id=`${el.id}-${i}`;onEachLazy(template.content.querySelectorAll("a[href]"),link=>{if(link.getAttribute("href")===oldHref){link.href=newHref}})}idMap.set(el.id,i+1)});const templateAssocItems=template.content.querySelectorAll("section.tymethod, "+"section.method, section.associatedtype, section.associatedconstant");if(isTrait){const li=document.createElement("li");const a=document.createElement("a");a.href=`#${template.content.querySelector(".impl").id}`;a.textContent=traitName;li.appendChild(a);sidebarTraitList.append(li)}else{onEachLazy(templateAssocItems,item=>{let block=hasClass(item,"associatedtype")?associatedTypes:(hasClass(item,"associatedconstant")?associatedConstants:(methods));if(!block){const blockTitle=hasClass(item,"associatedtype")?"Associated Types":(hasClass(item,"associatedconstant")?"Associated Constants":("Methods"));const blockClass=hasClass(item,"associatedtype")?"associatedtype":(hasClass(item,"associatedconstant")?"associatedconstant":("method"));const blockHeader=document.createElement("h3");const blockLink=document.createElement("a");blockLink.href="#implementations";blockLink.innerText=blockTitle;blockHeader.appendChild(blockLink);block=document.createElement("ul");block.className=`block ${blockClass}`;const insertionReference=methods||sidebarTraitList;if(insertionReference){const insertionReferenceH=insertionReference.previousElementSibling;sidebarSection.insertBefore(blockHeader,insertionReferenceH);sidebarSection.insertBefore(block,insertionReferenceH)}else{sidebarSection.appendChild(blockHeader);sidebarSection.appendChild(block)}if(hasClass(item,"associatedtype")){associatedTypes=block}else if(hasClass(item,"associatedconstant")){associatedConstants=block}else{methods=block}}const li=document.createElement("li");const a=document.createElement("a");a.innerText=item.id.split("-")[0].split(".")[1];a.href=`#${item.id}`;li.appendChild(a);block.appendChild(li)})}outputList.appendChild(template.content)}for(const list of[methods,associatedTypes,associatedConstants,sidebarTraitList]){if(!list){continue}const newChildren=Array.prototype.slice.call(list.children);newChildren.sort((a,b)=>{const aI=a.innerText;const bI=b.innerText;return aIbI?1:0});list.replaceChildren(...newChildren)}};if(window.pending_type_impls){window.register_type_impls(window.pending_type_impls)}function addSidebarCrates(){if(!window.ALL_CRATES){return}const sidebarElems=document.getElementsByClassName("sidebar-elems")[0];if(!sidebarElems){return}const h3=document.createElement("h3");h3.innerHTML="Crates";const ul=document.createElement("ul");ul.className="block crate";for(const crate of window.ALL_CRATES){const link=document.createElement("a");link.href=window.rootPath+crate+"/index.html";link.textContent=crate;const li=document.createElement("li");if(window.rootPath!=="./"&&crate===window.currentCrate){li.className="current"}li.appendChild(link);ul.appendChild(li)}sidebarElems.appendChild(h3);sidebarElems.appendChild(ul)}function expandAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);removeClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hasClass(e,"type-contents-toggle")&&!hasClass(e,"more-examples-toggle")){e.open=true}});innerToggle.title="collapse all docs";innerToggle.children[0].innerText="\u2212"}function collapseAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);addClass(innerToggle,"will-expand");onEachLazy(document.getElementsByClassName("toggle"),e=>{if(e.parentNode.id!=="implementations-list"||(!hasClass(e,"implementors-toggle")&&!hasClass(e,"type-contents-toggle"))){e.open=false}});innerToggle.title="expand all docs";innerToggle.children[0].innerText="+"}function toggleAllDocs(){const innerToggle=document.getElementById(toggleAllDocsId);if(!innerToggle){return}if(hasClass(innerToggle,"will-expand")){expandAllDocs()}else{collapseAllDocs()}}(function(){const toggles=document.getElementById(toggleAllDocsId);if(toggles){toggles.onclick=toggleAllDocs}const hideMethodDocs=getSettingValue("auto-hide-method-docs")==="true";const hideImplementations=getSettingValue("auto-hide-trait-implementations")==="true";const hideLargeItemContents=getSettingValue("auto-hide-large-items")!=="false";function setImplementorsTogglesOpen(id,open){const list=document.getElementById(id);if(list!==null){onEachLazy(list.getElementsByClassName("implementors-toggle"),e=>{e.open=open})}}if(hideImplementations){setImplementorsTogglesOpen("trait-implementations-list",false);setImplementorsTogglesOpen("blanket-implementations-list",false)}onEachLazy(document.getElementsByClassName("toggle"),e=>{if(!hideLargeItemContents&&hasClass(e,"type-contents-toggle")){e.open=true}if(hideMethodDocs&&hasClass(e,"method-toggle")){e.open=false}})}());window.rustdoc_add_line_numbers_to_examples=()=>{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");if(line_numbers.length>0){return}const count=x.textContent.split("\n").length;const elems=[];for(let i=0;i{onEachLazy(document.getElementsByClassName("rust-example-rendered"),x=>{const parent=x.parentNode;const line_numbers=parent.querySelectorAll(".example-line-numbers");for(const node of line_numbers){parent.removeChild(node)}})};if(getSettingValue("line-numbers")==="true"){window.rustdoc_add_line_numbers_to_examples()}function showSidebar(){window.hideAllModals(false);const sidebar=document.getElementsByClassName("sidebar")[0];addClass(sidebar,"shown")}function hideSidebar(){const sidebar=document.getElementsByClassName("sidebar")[0];removeClass(sidebar,"shown")}window.addEventListener("resize",()=>{if(window.CURRENT_TOOLTIP_ELEMENT){const base=window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE;const force_visible=base.TOOLTIP_FORCE_VISIBLE;hideTooltip(false);if(force_visible){showTooltip(base);base.TOOLTIP_FORCE_VISIBLE=true}}});const mainElem=document.getElementById(MAIN_ID);if(mainElem){mainElem.addEventListener("click",hideSidebar)}onEachLazy(document.querySelectorAll("a[href^='#']"),el=>{el.addEventListener("click",()=>{expandSection(el.hash.slice(1));hideSidebar()})});onEachLazy(document.querySelectorAll(".toggle > summary:not(.hideme)"),el=>{el.addEventListener("click",e=>{if(e.target.tagName!=="SUMMARY"&&e.target.tagName!=="A"){e.preventDefault()}})});function showTooltip(e){const notable_ty=e.getAttribute("data-notable-ty");if(!window.NOTABLE_TRAITS&¬able_ty){const data=document.getElementById("notable-traits-data");if(data){window.NOTABLE_TRAITS=JSON.parse(data.innerText)}else{throw new Error("showTooltip() called with notable without any notable traits!")}}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE===e){clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);return}window.hideAllModals(false);const wrapper=document.createElement("div");if(notable_ty){wrapper.innerHTML="
    "+window.NOTABLE_TRAITS[notable_ty]+"
    "}else{if(e.getAttribute("title")!==null){e.setAttribute("data-title",e.getAttribute("title"));e.removeAttribute("title")}if(e.getAttribute("data-title")!==null){const titleContent=document.createElement("div");titleContent.className="content";titleContent.appendChild(document.createTextNode(e.getAttribute("data-title")));wrapper.appendChild(titleContent)}}wrapper.className="tooltip popover";const focusCatcher=document.createElement("div");focusCatcher.setAttribute("tabindex","0");focusCatcher.onfocus=hideTooltip;wrapper.appendChild(focusCatcher);const pos=e.getBoundingClientRect();wrapper.style.top=(pos.top+window.scrollY+pos.height)+"px";wrapper.style.left=0;wrapper.style.right="auto";wrapper.style.visibility="hidden";const body=document.getElementsByTagName("body")[0];body.appendChild(wrapper);const wrapperPos=wrapper.getBoundingClientRect();const finalPos=pos.left+window.scrollX-wrapperPos.width+24;if(finalPos>0){wrapper.style.left=finalPos+"px"}else{wrapper.style.setProperty("--popover-arrow-offset",(wrapperPos.right-pos.right+4)+"px",)}wrapper.style.visibility="";window.CURRENT_TOOLTIP_ELEMENT=wrapper;window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE=e;clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);wrapper.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}clearTooltipHoverTimeout(e)};wrapper.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&!e.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(wrapper,"fade-out")}}}function setTooltipHoverTimeout(element,show){clearTooltipHoverTimeout(element);if(!show&&!window.CURRENT_TOOLTIP_ELEMENT){return}if(show&&window.CURRENT_TOOLTIP_ELEMENT){return}if(window.CURRENT_TOOLTIP_ELEMENT&&window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE!==element){return}element.TOOLTIP_HOVER_TIMEOUT=setTimeout(()=>{if(show){showTooltip(element)}else if(!element.TOOLTIP_FORCE_VISIBLE){hideTooltip(false)}},show?window.RUSTDOC_TOOLTIP_HOVER_MS:window.RUSTDOC_TOOLTIP_HOVER_EXIT_MS)}function clearTooltipHoverTimeout(element){if(element.TOOLTIP_HOVER_TIMEOUT!==undefined){removeClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out");clearTimeout(element.TOOLTIP_HOVER_TIMEOUT);delete element.TOOLTIP_HOVER_TIMEOUT}}function tooltipBlurHandler(event){if(window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.contains(event.relatedTarget)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(document.activeElement)&&!window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.contains(event.relatedTarget)){setTimeout(()=>hideTooltip(false),0)}}function hideTooltip(focus){if(window.CURRENT_TOOLTIP_ELEMENT){if(window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE){if(focus){window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.focus()}window.CURRENT_TOOLTIP_ELEMENT.TOOLTIP_BASE.TOOLTIP_FORCE_VISIBLE=false}const body=document.getElementsByTagName("body")[0];body.removeChild(window.CURRENT_TOOLTIP_ELEMENT);clearTooltipHoverTimeout(window.CURRENT_TOOLTIP_ELEMENT);window.CURRENT_TOOLTIP_ELEMENT=null}}onEachLazy(document.getElementsByClassName("tooltip"),e=>{e.onclick=()=>{e.TOOLTIP_FORCE_VISIBLE=e.TOOLTIP_FORCE_VISIBLE?false:true;if(window.CURRENT_TOOLTIP_ELEMENT&&!e.TOOLTIP_FORCE_VISIBLE){hideTooltip(true)}else{showTooltip(e);window.CURRENT_TOOLTIP_ELEMENT.setAttribute("tabindex","0");window.CURRENT_TOOLTIP_ELEMENT.focus();window.CURRENT_TOOLTIP_ELEMENT.onblur=tooltipBlurHandler}return false};e.onpointerenter=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointermove=ev=>{if(ev.pointerType!=="mouse"){return}setTooltipHoverTimeout(e,true)};e.onpointerleave=ev=>{if(ev.pointerType!=="mouse"){return}if(!e.TOOLTIP_FORCE_VISIBLE&&window.CURRENT_TOOLTIP_ELEMENT&&!window.CURRENT_TOOLTIP_ELEMENT.contains(ev.relatedTarget)){setTooltipHoverTimeout(e,false);addClass(window.CURRENT_TOOLTIP_ELEMENT,"fade-out")}}});const sidebar_menu_toggle=document.getElementsByClassName("sidebar-menu-toggle")[0];if(sidebar_menu_toggle){sidebar_menu_toggle.addEventListener("click",()=>{const sidebar=document.getElementsByClassName("sidebar")[0];if(!hasClass(sidebar,"shown")){showSidebar()}else{hideSidebar()}})}function helpBlurHandler(event){blurHandler(event,getHelpButton(),window.hidePopoverMenus)}function buildHelpMenu(){const book_info=document.createElement("span");const channel=getVar("channel");book_info.className="top";book_info.innerHTML=`You can find more information in \ +the rustdoc book.`;const shortcuts=[["?","Show this help dialog"],["S / /","Focus the search field"],["↑","Move up in search results"],["↓","Move down in search results"],["← / →","Switch result tab (when results focused)"],["⏎","Go to active search result"],["+","Expand all sections"],["-","Collapse all sections"],].map(x=>"
    "+x[0].split(" ").map((y,index)=>((index&1)===0?""+y+"":" "+y+" ")).join("")+"
    "+x[1]+"
    ").join("");const div_shortcuts=document.createElement("div");addClass(div_shortcuts,"shortcuts");div_shortcuts.innerHTML="

    Keyboard Shortcuts

    "+shortcuts+"
    ";const infos=[`For a full list of all search features, take a look here.`,"Prefix searches with a type followed by a colon (e.g., fn:) to \ + restrict the search to a given item kind.","Accepted kinds are: fn, mod, struct, \ + enum, trait, type, macro, \ + and const.","Search functions by type signature (e.g., vec -> usize or \ + -> vec or String, enum:Cow -> bool)","You can look for items with an exact name by putting double quotes around \ + your request: \"string\"","Look for functions that accept or return \ + slices and \ + arrays by writing \ + square brackets (e.g., -> [u8] or [] -> Option)","Look for items inside another one by searching for a path: vec::Vec",].map(x=>"

    "+x+"

    ").join("");const div_infos=document.createElement("div");addClass(div_infos,"infos");div_infos.innerHTML="

    Search Tricks

    "+infos;const rustdoc_version=document.createElement("span");rustdoc_version.className="bottom";const rustdoc_version_code=document.createElement("code");rustdoc_version_code.innerText="rustdoc "+getVar("rustdoc-version");rustdoc_version.appendChild(rustdoc_version_code);const container=document.createElement("div");if(!isHelpPage){container.className="popover"}container.id="help";container.style.display="none";const side_by_side=document.createElement("div");side_by_side.className="side-by-side";side_by_side.appendChild(div_shortcuts);side_by_side.appendChild(div_infos);container.appendChild(book_info);container.appendChild(side_by_side);container.appendChild(rustdoc_version);if(isHelpPage){const help_section=document.createElement("section");help_section.appendChild(container);document.getElementById("main-content").appendChild(help_section);container.style.display="block"}else{const help_button=getHelpButton();help_button.appendChild(container);container.onblur=helpBlurHandler;help_button.onblur=helpBlurHandler;help_button.children[0].onblur=helpBlurHandler}return container}window.hideAllModals=switchFocus=>{hideSidebar();window.hidePopoverMenus();hideTooltip(switchFocus)};window.hidePopoverMenus=()=>{onEachLazy(document.querySelectorAll(".search-form .popover"),elem=>{elem.style.display="none"})};function getHelpMenu(buildNeeded){let menu=getHelpButton().querySelector(".popover");if(!menu&&buildNeeded){menu=buildHelpMenu()}return menu}function showHelp(){getHelpButton().querySelector("a").focus();const menu=getHelpMenu(true);if(menu.style.display==="none"){window.hideAllModals();menu.style.display=""}}if(isHelpPage){showHelp();document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault()})}else{document.querySelector(`#${HELP_BUTTON_ID} > a`).addEventListener("click",event=>{const target=event.target;if(target.tagName!=="A"||target.parentElement.id!==HELP_BUTTON_ID||event.ctrlKey||event.altKey||event.metaKey){return}event.preventDefault();const menu=getHelpMenu(true);const shouldShowHelp=menu.style.display==="none";if(shouldShowHelp){showHelp()}else{window.hidePopoverMenus()}})}setMobileTopbar();addSidebarItems();addSidebarCrates();onHashChange(null);window.addEventListener("hashchange",onHashChange);searchState.setup()}());(function(){const SIDEBAR_MIN=100;const SIDEBAR_MAX=500;const RUSTDOC_MOBILE_BREAKPOINT=700;const BODY_MIN=400;const SIDEBAR_VANISH_THRESHOLD=SIDEBAR_MIN/2;const sidebarButton=document.getElementById("sidebar-button");if(sidebarButton){sidebarButton.addEventListener("click",e=>{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false");if(document.querySelector(".rustdoc.src")){window.rustdocToggleSrcSidebar()}e.preventDefault()})}let currentPointerId=null;let desiredSidebarSize=null;let pendingSidebarResizingFrame=false;const resizer=document.querySelector(".sidebar-resizer");const sidebar=document.querySelector(".sidebar");if(!resizer||!sidebar){return}const isSrcPage=hasClass(document.body,"src");function hideSidebar(){if(isSrcPage){window.rustdocCloseSourceSidebar();updateLocalStorage("src-sidebar-width",null);document.documentElement.style.removeProperty("--src-sidebar-width");sidebar.style.removeProperty("--src-sidebar-width");resizer.style.removeProperty("--src-sidebar-width")}else{addClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","true");updateLocalStorage("desktop-sidebar-width",null);document.documentElement.style.removeProperty("--desktop-sidebar-width");sidebar.style.removeProperty("--desktop-sidebar-width");resizer.style.removeProperty("--desktop-sidebar-width")}}function showSidebar(){if(isSrcPage){window.rustdocShowSourceSidebar()}else{removeClass(document.documentElement,"hide-sidebar");updateLocalStorage("hide-sidebar","false")}}function changeSidebarSize(size){if(isSrcPage){updateLocalStorage("src-sidebar-width",size);sidebar.style.setProperty("--src-sidebar-width",size+"px");resizer.style.setProperty("--src-sidebar-width",size+"px")}else{updateLocalStorage("desktop-sidebar-width",size);sidebar.style.setProperty("--desktop-sidebar-width",size+"px");resizer.style.setProperty("--desktop-sidebar-width",size+"px")}}function isSidebarHidden(){return isSrcPage?!hasClass(document.documentElement,"src-sidebar-expanded"):hasClass(document.documentElement,"hide-sidebar")}function resize(e){if(currentPointerId===null||currentPointerId!==e.pointerId){return}e.preventDefault();const pos=e.clientX-3;if(pos=SIDEBAR_MIN){if(isSidebarHidden()){showSidebar()}const constrainedPos=Math.min(pos,window.innerWidth-BODY_MIN,SIDEBAR_MAX);changeSidebarSize(constrainedPos);desiredSidebarSize=constrainedPos;if(pendingSidebarResizingFrame!==false){clearTimeout(pendingSidebarResizingFrame)}pendingSidebarResizingFrame=setTimeout(()=>{if(currentPointerId===null||pendingSidebarResizingFrame===false){return}pendingSidebarResizingFrame=false;document.documentElement.style.setProperty("--resizing-sidebar-width",desiredSidebarSize+"px",)},100)}}window.addEventListener("resize",()=>{if(window.innerWidth=(window.innerWidth-BODY_MIN)){changeSidebarSize(window.innerWidth-BODY_MIN)}else if(desiredSidebarSize!==null&&desiredSidebarSize>SIDEBAR_MIN){changeSidebarSize(desiredSidebarSize)}});function stopResize(e){if(currentPointerId===null){return}if(e){e.preventDefault()}desiredSidebarSize=sidebar.getBoundingClientRect().width;removeClass(resizer,"active");window.removeEventListener("pointermove",resize,false);window.removeEventListener("pointerup",stopResize,false);removeClass(document.documentElement,"sidebar-resizing");document.documentElement.style.removeProperty("--resizing-sidebar-width");if(resizer.releasePointerCapture){resizer.releasePointerCapture(currentPointerId);currentPointerId=null}}function initResize(e){if(currentPointerId!==null||e.altKey||e.ctrlKey||e.metaKey||e.button!==0){return}if(resizer.setPointerCapture){resizer.setPointerCapture(e.pointerId);if(!resizer.hasPointerCapture(e.pointerId)){resizer.releasePointerCapture(e.pointerId);return}currentPointerId=e.pointerId}window.hideAllModals(false);e.preventDefault();window.addEventListener("pointermove",resize,false);window.addEventListener("pointercancel",stopResize,false);window.addEventListener("pointerup",stopResize,false);addClass(resizer,"active");addClass(document.documentElement,"sidebar-resizing");const pos=e.clientX-sidebar.offsetLeft-3;document.documentElement.style.setProperty("--resizing-sidebar-width",pos+"px");desiredSidebarSize=null}resizer.addEventListener("pointerdown",initResize,false)}());(function(){let reset_button_timeout=null;const but=document.getElementById("copy-path");if(!but){return}but.onclick=()=>{const parent=but.parentElement;const path=[];onEach(parent.childNodes,child=>{if(child.tagName==="A"){path.push(child.textContent)}});const el=document.createElement("textarea");el.value=path.join("::");el.setAttribute("readonly","");el.style.position="absolute";el.style.left="-9999px";document.body.appendChild(el);el.select();document.execCommand("copy");document.body.removeChild(el);but.classList.add("clicked");if(reset_button_timeout!==null){window.clearTimeout(reset_button_timeout)}function reset_button(){reset_button_timeout=null;but.classList.remove("clicked")}reset_button_timeout=window.setTimeout(reset_button,1000)}}()) \ No newline at end of file diff --git a/docs/macos_docs/static.files/noscript-09095024cf37855e.css b/docs/macos_docs/static.files/noscript-09095024cf37855e.css new file mode 100644 index 00000000..59786941 --- /dev/null +++ b/docs/macos_docs/static.files/noscript-09095024cf37855e.css @@ -0,0 +1 @@ + #main-content .attributes{margin-left:0 !important;}#copy-path,#sidebar-button,.sidebar-resizer{display:none !important;}nav.sub{display:none;}.src .sidebar{display:none;}.notable-traits{display:none;}:root,:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}@media (prefers-color-scheme:dark){:root,:root:not([data-theme]){--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}} \ No newline at end of file diff --git a/docs/macos_docs/static.files/rustdoc-081576b923113409.css b/docs/macos_docs/static.files/rustdoc-081576b923113409.css new file mode 100644 index 00000000..33b69caa --- /dev/null +++ b/docs/macos_docs/static.files/rustdoc-081576b923113409.css @@ -0,0 +1,27 @@ + :root{--nav-sub-mobile-padding:8px;--search-typename-width:6.75rem;--desktop-sidebar-width:200px;--src-sidebar-width:300px;--desktop-sidebar-z-index:100;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:400;src:local('Fira Sans'),url("FiraSans-Regular-018c141bf0843ffd.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Fira Sans';font-style:normal;font-weight:500;src:local('Fira Sans Medium'),url("FiraSans-Medium-8f9a781e4970d388.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:400;src:local('Source Serif 4'),url("SourceSerif4-Regular-46f98efaafac5295.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:italic;font-weight:400;src:local('Source Serif 4 Italic'),url("SourceSerif4-It-acdfaf1a8af734b1.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Serif 4';font-style:normal;font-weight:700;src:local('Source Serif 4 Bold'),url("SourceSerif4-Bold-a2c9cd1067f8b328.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:400;src:url("SourceCodePro-Regular-562dcc5011b6de7d.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:italic;font-weight:400;src:url("SourceCodePro-It-1cc31594bf4f1f79.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'Source Code Pro';font-style:normal;font-weight:600;src:url("SourceCodePro-Semibold-d899c5a5c4aeb14a.ttf.woff2") format("woff2");font-display:swap;}@font-face {font-family:'NanumBarunGothic';src:url("NanumBarunGothic-0f09457c7a19b7c6.ttf.woff2") format("woff2");font-display:swap;unicode-range:U+AC00-D7AF,U+1100-11FF,U+3130-318F,U+A960-A97F,U+D7B0-D7FF;}*{box-sizing:border-box;}body{font:1rem/1.5 "Source Serif 4",NanumBarunGothic,serif;margin:0;position:relative;overflow-wrap:break-word;overflow-wrap:anywhere;font-feature-settings:"kern","liga";background-color:var(--main-background-color);color:var(--main-color);}h1{font-size:1.5rem;}h2{font-size:1.375rem;}h3{font-size:1.25rem;}h1,h2,h3,h4,h5,h6{font-weight:500;}h1,h2,h3,h4{margin:25px 0 15px 0;padding-bottom:6px;}.docblock h3,.docblock h4,h5,h6{margin:15px 0 5px 0;}.docblock>h2:first-child,.docblock>h3:first-child,.docblock>h4:first-child,.docblock>h5:first-child,.docblock>h6:first-child{margin-top:0;}.main-heading h1{margin:0;padding:0;flex-grow:1;overflow-wrap:break-word;overflow-wrap:anywhere;}.main-heading{display:flex;flex-wrap:wrap;padding-bottom:6px;margin-bottom:15px;}.content h2,.top-doc .docblock>h3,.top-doc .docblock>h4{border-bottom:1px solid var(--headings-border-bottom-color);}h1,h2{line-height:1.25;padding-top:3px;padding-bottom:9px;}h3.code-header{font-size:1.125rem;}h4.code-header{font-size:1rem;}.code-header{font-weight:600;margin:0;padding:0;white-space:pre-wrap;}#crate-search,h1,h2,h3,h4,h5,h6,.sidebar,.mobile-topbar,.search-input,.search-results .result-name,.item-name>a,.out-of-band,span.since,a.src,#help-button>a,summary.hideme,.scraped-example-list,ul.all-items{font-family:"Fira Sans",Arial,NanumBarunGothic,sans-serif;}#toggle-all-docs,a.anchor,.section-header a,#src-sidebar a,.rust a,.sidebar h2 a,.sidebar h3 a,.mobile-topbar h2 a,h1 a,.search-results a,.stab,.result-name i{color:var(--main-color);}span.enum,a.enum,span.struct,a.struct,span.union,a.union,span.primitive,a.primitive,span.type,a.type,span.foreigntype,a.foreigntype{color:var(--type-link-color);}span.trait,a.trait,span.traitalias,a.traitalias{color:var(--trait-link-color);}span.associatedtype,a.associatedtype,span.constant,a.constant,span.static,a.static{color:var(--assoc-item-link-color);}span.fn,a.fn,span.method,a.method,span.tymethod,a.tymethod{color:var(--function-link-color);}span.attr,a.attr,span.derive,a.derive,span.macro,a.macro{color:var(--macro-link-color);}span.mod,a.mod{color:var(--mod-link-color);}span.keyword,a.keyword{color:var(--keyword-link-color);}a{color:var(--link-color);text-decoration:none;}ol,ul{padding-left:24px;}ul ul,ol ul,ul ol,ol ol{margin-bottom:.625em;}p,.docblock>.warning{margin:0 0 .75em 0;}p:last-child,.docblock>.warning:last-child{margin:0;}button{padding:1px 6px;cursor:pointer;}button#toggle-all-docs{padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.rustdoc{display:flex;flex-direction:row;flex-wrap:nowrap;}main{position:relative;flex-grow:1;padding:10px 15px 40px 45px;min-width:0;}.src main{padding:15px;}.width-limiter{max-width:960px;margin-right:auto;}details:not(.toggle) summary{margin-bottom:.6em;}code,pre,a.test-arrow,.code-header{font-family:"Source Code Pro",monospace;}.docblock code,.docblock-short code{border-radius:3px;padding:0 0.125em;}.docblock pre code,.docblock-short pre code{padding:0;}pre{padding:14px;line-height:1.5;}pre.item-decl{overflow-x:auto;}.item-decl .type-contents-toggle{contain:initial;}.src .content pre{padding:20px;}.rustdoc.src .example-wrap pre.src-line-numbers{padding:20px 0 20px 4px;}img{max-width:100%;}.logo-container{line-height:0;display:block;}.rust-logo{filter:var(--rust-logo-filter);}.sidebar{font-size:0.875rem;flex:0 0 var(--desktop-sidebar-width);width:var(--desktop-sidebar-width);overflow-y:scroll;overscroll-behavior:contain;position:sticky;height:100vh;top:0;left:0;z-index:var(--desktop-sidebar-z-index);}.rustdoc.src .sidebar{flex-basis:50px;width:50px;border-right:1px solid;overflow-x:hidden;overflow-y:hidden;}.hide-sidebar .sidebar,.hide-sidebar .sidebar-resizer{display:none;}.sidebar-resizer{touch-action:none;width:9px;cursor:col-resize;z-index:calc(var(--desktop-sidebar-z-index) + 1);position:fixed;height:100%;left:calc(var(--desktop-sidebar-width) + 1px);}.rustdoc.src .sidebar-resizer{left:49px;}.src-sidebar-expanded .src .sidebar-resizer{left:var(--src-sidebar-width);}.sidebar-resizing{-moz-user-select:none;-webkit-user-select:none;-ms-user-select:none;user-select:none;}.sidebar-resizing*{cursor:col-resize !important;}.sidebar-resizing .sidebar{position:fixed;}.sidebar-resizing>body{padding-left:var(--resizing-sidebar-width);}.sidebar-resizer:hover,.sidebar-resizer:active,.sidebar-resizer:focus,.sidebar-resizer.active{width:10px;margin:0;left:var(--desktop-sidebar-width);border-left:solid 1px var(--sidebar-resizer-hover);}.src-sidebar-expanded .rustdoc.src .sidebar-resizer:hover,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:active,.src-sidebar-expanded .rustdoc.src .sidebar-resizer:focus,.src-sidebar-expanded .rustdoc.src .sidebar-resizer.active{left:calc(var(--src-sidebar-width) - 1px);}@media (pointer:coarse){.sidebar-resizer{display:none !important;}}.sidebar-resizer.active{padding:0 140px;width:2px;margin-left:-140px;border-left:none;}.sidebar-resizer.active:before{border-left:solid 2px var(--sidebar-resizer-active);display:block;height:100%;content:"";}.sidebar,.mobile-topbar,.sidebar-menu-toggle,#src-sidebar{background-color:var(--sidebar-background-color);}.src .sidebar>*{visibility:hidden;}.src-sidebar-expanded .src .sidebar{overflow-y:auto;flex-basis:var(--src-sidebar-width);width:var(--src-sidebar-width);}.src-sidebar-expanded .src .sidebar>*{visibility:visible;}#all-types{margin-top:1em;}*{scrollbar-width:initial;scrollbar-color:var(--scrollbar-color);}.sidebar{scrollbar-width:thin;scrollbar-color:var(--scrollbar-color);}::-webkit-scrollbar{width:12px;}.sidebar::-webkit-scrollbar{width:8px;}::-webkit-scrollbar-track{-webkit-box-shadow:inset 0;background-color:var(--scrollbar-track-background-color);}.sidebar::-webkit-scrollbar-track{background-color:var(--scrollbar-track-background-color);}::-webkit-scrollbar-thumb,.sidebar::-webkit-scrollbar-thumb{background-color:var(--scrollbar-thumb-background-color);}.hidden{display:none !important;}.logo-container>img{height:48px;width:48px;}ul.block,.block li{padding:0;margin:0;list-style:none;}.sidebar-elems a,.sidebar>h2 a{display:block;padding:0.25rem;margin-left:-0.25rem;margin-right:0.25rem;}.sidebar h2{overflow-wrap:anywhere;padding:0;margin:0.7rem 0;}.sidebar h3{font-size:1.125rem;padding:0;margin:0;}.sidebar-elems,.sidebar>.version,.sidebar>h2{padding-left:24px;}.sidebar a{color:var(--sidebar-link-color);}.sidebar .current,.sidebar .current a,.sidebar-crate a.logo-container:hover+h2 a,.sidebar a:hover:not(.logo-container){background-color:var(--sidebar-current-link-background-color);}.sidebar-elems .block{margin-bottom:2em;}.sidebar-elems .block li a{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;}.sidebar-crate{display:flex;align-items:center;justify-content:center;margin:14px 32px 1rem;row-gap:10px;column-gap:32px;flex-wrap:wrap;}.sidebar-crate h2{flex-grow:1;margin:0 -8px;align-self:start;}.sidebar-crate .logo-container{margin:0 -16px 0 -16px;text-align:center;}.sidebar-crate h2 a{display:block;margin:0 calc(-24px + 0.25rem) 0 -0.2rem;padding:calc((16px - 0.57rem ) / 2 ) 0.25rem;padding-left:0.2rem;}.sidebar-crate h2 .version{display:block;font-weight:normal;font-size:1rem;overflow-wrap:break-word;}.sidebar-crate+.version{margin-top:-1rem;margin-bottom:1rem;}.mobile-topbar{display:none;}.rustdoc .example-wrap{display:flex;position:relative;margin-bottom:10px;}.rustdoc .example-wrap:last-child{margin-bottom:0px;}.rustdoc .example-wrap pre{margin:0;flex-grow:1;}.rustdoc:not(.src) .example-wrap pre{overflow:auto hidden;}.rustdoc .example-wrap pre.example-line-numbers,.rustdoc .example-wrap pre.src-line-numbers{flex-grow:0;min-width:fit-content;overflow:initial;text-align:right;-webkit-user-select:none;user-select:none;padding:14px 8px;color:var(--src-line-numbers-span-color);}.rustdoc .example-wrap pre.src-line-numbers{padding:14px 0;}.src-line-numbers a,.src-line-numbers span{color:var(--src-line-numbers-span-color);padding:0 8px;}.src-line-numbers :target{background-color:transparent;border-right:none;padding:0 8px;}.src-line-numbers .line-highlighted{background-color:var(--src-line-number-highlighted-background-color);}.search-loading{text-align:center;}.docblock-short{overflow-wrap:break-word;overflow-wrap:anywhere;}.docblock :not(pre)>code,.docblock-short code{white-space:pre-wrap;}.top-doc .docblock h2{font-size:1.375rem;}.top-doc .docblock h3{font-size:1.25rem;}.top-doc .docblock h4,.top-doc .docblock h5{font-size:1.125rem;}.top-doc .docblock h6{font-size:1rem;}.docblock h5{font-size:1rem;}.docblock h6{font-size:0.875rem;}.docblock{margin-left:24px;position:relative;}.docblock>:not(.more-examples-toggle):not(.example-wrap){max-width:100%;overflow-x:auto;}.out-of-band{flex-grow:0;font-size:1.125rem;}.docblock code,.docblock-short code,pre,.rustdoc.src .example-wrap{background-color:var(--code-block-background-color);}#main-content{position:relative;}.docblock table{margin:.5em 0;border-collapse:collapse;}.docblock table td,.docblock table th{padding:.5em;border:1px solid var(--border-color);}.docblock table tbody tr:nth-child(2n){background:var(--table-alt-row-background-color);}div.where{white-space:pre-wrap;font-size:0.875rem;}.item-info{display:block;margin-left:24px;}.item-info code{font-size:0.875rem;}#main-content>.item-info{margin-left:0;}nav.sub{flex-grow:1;flex-flow:row nowrap;margin:4px 0 25px 0;display:flex;align-items:center;}.search-form{position:relative;display:flex;height:34px;flex-grow:1;}.src nav.sub{margin:0 0 15px 0;}.section-header{display:block;position:relative;}.section-header:hover>.anchor,.impl:hover>.anchor,.trait-impl:hover>.anchor,.variant:hover>.anchor{display:initial;}.anchor{display:none;position:absolute;left:-0.5em;background:none !important;}.anchor.field{left:-5px;}.section-header>.anchor{left:-15px;padding-right:8px;}h2.section-header>.anchor{padding-right:6px;}a.doc-anchor{color:var(--main-color);display:none;position:absolute;left:-17px;padding-right:5px;padding-left:3px;}*:hover>.doc-anchor{display:block;}.top-doc>.docblock>*:first-child>.doc-anchor{display:none !important;}.main-heading a:hover,.example-wrap .rust a:hover,.all-items a:hover,.docblock a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover:not(.doc-anchor),.docblock-short a:not(.test-arrow):not(.scrape-help):not(.tooltip):hover,.item-info a{text-decoration:underline;}.crate.block li.current a{font-weight:500;}table,.item-table{overflow-wrap:break-word;}.item-table{display:table;padding:0;margin:0;}.item-table>li{display:table-row;}.item-table>li>div{display:table-cell;}.item-table>li>.item-name{padding-right:1.25rem;}.search-results-title{margin-top:0;white-space:nowrap;display:flex;align-items:baseline;}#crate-search-div{position:relative;min-width:5em;}#crate-search{min-width:115px;padding:0 23px 0 4px;max-width:100%;text-overflow:ellipsis;border:1px solid var(--border-color);border-radius:4px;outline:none;cursor:pointer;-moz-appearance:none;-webkit-appearance:none;text-indent:0.01px;background-color:var(--main-background-color);color:inherit;line-height:1.5;font-weight:500;}#crate-search:hover,#crate-search:focus{border-color:var(--crate-search-hover-border);}#crate-search-div::after{pointer-events:none;width:100%;height:100%;position:absolute;top:0;left:0;content:"";background-repeat:no-repeat;background-size:20px;background-position:calc(100% - 2px) 56%;background-image:url('data:image/svg+xml, \ + ');filter:var(--crate-search-div-filter);}#crate-search-div:hover::after,#crate-search-div:focus-within::after{filter:var(--crate-search-div-hover-filter);}#crate-search>option{font-size:1rem;}.search-input{-webkit-appearance:none;outline:none;border:1px solid var(--border-color);border-radius:2px;padding:8px;font-size:1rem;flex-grow:1;background-color:var(--button-background-color);color:var(--search-color);}.search-input:focus{border-color:var(--search-input-focused-border-color);}.search-results{display:none;}.search-results.active{display:block;}.search-results>a{display:flex;margin-left:2px;margin-right:2px;border-bottom:1px solid var(--search-result-border-color);gap:1em;}.search-results>a>div.desc{white-space:nowrap;text-overflow:ellipsis;overflow:hidden;flex:2;}.search-results a:hover,.search-results a:focus{background-color:var(--search-result-link-focus-background-color);}.search-results .result-name{display:flex;align-items:center;justify-content:start;flex:3;}.search-results .result-name .alias{color:var(--search-results-alias-color);}.search-results .result-name .grey{color:var(--search-results-grey-color);}.search-results .result-name .typename{color:var(--search-results-grey-color);font-size:0.875rem;width:var(--search-typename-width);}.search-results .result-name .path{word-break:break-all;max-width:calc(100% - var(--search-typename-width));display:inline-block;}.search-results .result-name .path>*{display:inline;}.popover{position:absolute;top:100%;right:0;z-index:calc(var(--desktop-sidebar-z-index) + 1);margin-top:7px;border-radius:3px;border:1px solid var(--border-color);background-color:var(--main-background-color);color:var(--main-color);--popover-arrow-offset:11px;}.popover::before{content:'';position:absolute;right:var(--popover-arrow-offset);border:solid var(--border-color);border-width:1px 1px 0 0;background-color:var(--main-background-color);padding:4px;transform:rotate(-45deg);top:-5px;}.setting-line{margin:1.2em 0.6em;}.setting-radio input,.setting-check input{margin-right:0.3em;height:1.2rem;width:1.2rem;border:2px solid var(--settings-input-border-color);outline:none;-webkit-appearance:none;cursor:pointer;}.setting-radio input{border-radius:50%;}.setting-radio span,.setting-check span{padding-bottom:1px;}.setting-radio{margin-top:0.1em;margin-bottom:0.1em;min-width:3.8em;padding:0.3em;display:inline-flex;align-items:center;cursor:pointer;}.setting-radio+.setting-radio{margin-left:0.5em;}.setting-check{margin-right:20px;display:flex;align-items:center;cursor:pointer;}.setting-radio input:checked{box-shadow:inset 0 0 0 3px var(--main-background-color);background-color:var(--settings-input-color);}.setting-check input:checked{background-color:var(--settings-input-color);border-width:1px;content:url('data:image/svg+xml,\ + \ + ');}.setting-radio input:focus,.setting-check input:focus{box-shadow:0 0 1px 1px var(--settings-input-color);}.setting-radio input:checked:focus{box-shadow:inset 0 0 0 3px var(--main-background-color),0 0 2px 2px var(--settings-input-color);}.setting-radio input:hover,.setting-check input:hover{border-color:var(--settings-input-color) !important;}#help.popover{max-width:600px;--popover-arrow-offset:48px;}#help dt{float:left;clear:left;margin-right:0.5rem;}#help span.top,#help span.bottom{text-align:center;display:block;font-size:1.125rem;}#help span.top{margin:10px 0;border-bottom:1px solid var(--border-color);padding-bottom:4px;margin-bottom:6px;}#help span.bottom{clear:both;border-top:1px solid var(--border-color);}.side-by-side>div{width:50%;float:left;padding:0 20px 20px 17px;}.item-info .stab{display:block;padding:3px;margin-bottom:5px;}.item-name .stab{margin-left:0.3125em;}.stab{padding:0 2px;font-size:0.875rem;font-weight:normal;color:var(--main-color);background-color:var(--stab-background-color);width:fit-content;white-space:pre-wrap;border-radius:3px;display:inline;vertical-align:baseline;}.stab.portability>code{background:none;color:var(--stab-code-color);}.stab .emoji,.item-info .stab::before{font-size:1.25rem;}.stab .emoji{margin-right:0.3rem;}.item-info .stab::before{content:"\0";width:0;display:inline-block;color:transparent;}.emoji{text-shadow:1px 0 0 black,-1px 0 0 black,0 1px 0 black,0 -1px 0 black;}.since{font-weight:normal;font-size:initial;}.rightside{padding-left:12px;float:right;}.rightside:not(a),.out-of-band{color:var(--right-side-color);}pre.rust{tab-size:4;-moz-tab-size:4;}pre.rust .kw{color:var(--code-highlight-kw-color);}pre.rust .kw-2{color:var(--code-highlight-kw-2-color);}pre.rust .lifetime{color:var(--code-highlight-lifetime-color);}pre.rust .prelude-ty{color:var(--code-highlight-prelude-color);}pre.rust .prelude-val{color:var(--code-highlight-prelude-val-color);}pre.rust .string{color:var(--code-highlight-string-color);}pre.rust .number{color:var(--code-highlight-number-color);}pre.rust .bool-val{color:var(--code-highlight-literal-color);}pre.rust .self{color:var(--code-highlight-self-color);}pre.rust .attr{color:var(--code-highlight-attribute-color);}pre.rust .macro,pre.rust .macro-nonterminal{color:var(--code-highlight-macro-color);}pre.rust .question-mark{font-weight:bold;color:var(--code-highlight-question-mark-color);}pre.rust .comment{color:var(--code-highlight-comment-color);}pre.rust .doccomment{color:var(--code-highlight-doc-comment-color);}.rustdoc.src .example-wrap pre.rust a{background:var(--codeblock-link-background);}.example-wrap.compile_fail,.example-wrap.should_panic{border-left:2px solid var(--codeblock-error-color);}.ignore.example-wrap{border-left:2px solid var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover,.example-wrap.should_panic:hover{border-left:2px solid var(--codeblock-error-hover-color);}.example-wrap.ignore:hover{border-left:2px solid var(--codeblock-ignore-hover-color);}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip{color:var(--codeblock-error-color);}.example-wrap.ignore .tooltip{color:var(--codeblock-ignore-color);}.example-wrap.compile_fail:hover .tooltip,.example-wrap.should_panic:hover .tooltip{color:var(--codeblock-error-hover-color);}.example-wrap.ignore:hover .tooltip{color:var(--codeblock-ignore-hover-color);}.example-wrap .tooltip{position:absolute;display:block;left:-25px;top:5px;margin:0;line-height:1;}.example-wrap.compile_fail .tooltip,.example-wrap.should_panic .tooltip,.example-wrap.ignore .tooltip{font-weight:bold;font-size:1.25rem;}.content .docblock .warning{border-left:2px solid var(--warning-border-color);padding:14px;position:relative;overflow-x:visible !important;}.content .docblock .warning::before{color:var(--warning-border-color);content:"ⓘ";position:absolute;left:-25px;top:5px;font-weight:bold;font-size:1.25rem;}.top-doc>.docblock>.warning:first-child::before{top:20px;}a.test-arrow{visibility:hidden;position:absolute;padding:5px 10px 5px 10px;border-radius:5px;font-size:1.375rem;top:5px;right:5px;z-index:1;color:var(--test-arrow-color);background-color:var(--test-arrow-background-color);}a.test-arrow:hover{color:var(--test-arrow-hover-color);background-color:var(--test-arrow-hover-background-color);}.example-wrap:hover .test-arrow{visibility:visible;}.code-attribute{font-weight:300;color:var(--code-attribute-color);}.item-spacer{width:100%;height:12px;display:block;}.out-of-band>span.since{font-size:1.25rem;}.sub-variant h4{font-size:1rem;font-weight:400;margin-top:0;margin-bottom:0;}.sub-variant{margin-left:24px;margin-bottom:40px;}.sub-variant>.sub-variant-field{margin-left:24px;}:target{padding-right:3px;background-color:var(--target-background-color);border-right:3px solid var(--target-border-color);}.code-header a.tooltip{color:inherit;margin-right:15px;position:relative;}.code-header a.tooltip:hover{color:var(--link-color);}a.tooltip:hover::after{position:absolute;top:calc(100% - 10px);left:-15px;right:-15px;height:20px;content:"\00a0";}.fade-out{opacity:0;transition:opacity 0.45s cubic-bezier(0,0,0.1,1.0);}.popover.tooltip .content{margin:0.25em 0.5em;}.popover.tooltip .content pre,.popover.tooltip .content code{background:transparent;margin:0;padding:0;font-size:1.25rem;white-space:pre-wrap;}.popover.tooltip .content>h3:first-child{margin:0 0 5px 0;}.search-failed{text-align:center;margin-top:20px;display:none;}.search-failed.active{display:block;}.search-failed>ul{text-align:left;max-width:570px;margin-left:auto;margin-right:auto;}#search-tabs{display:flex;flex-direction:row;gap:1px;margin-bottom:4px;}#search-tabs button{text-align:center;font-size:1.125rem;border:0;border-top:2px solid;flex:1;line-height:1.5;color:inherit;}#search-tabs button:not(.selected){background-color:var(--search-tab-button-not-selected-background);border-top-color:var(--search-tab-button-not-selected-border-top-color);}#search-tabs button:hover,#search-tabs button.selected{background-color:var(--search-tab-button-selected-background);border-top-color:var(--search-tab-button-selected-border-top-color);}#search-tabs .count{font-size:1rem;font-variant-numeric:tabular-nums;color:var(--search-tab-title-count-color);}#search .error code{border-radius:3px;background-color:var(--search-error-code-background-color);}.search-corrections{font-weight:normal;}#src-sidebar{width:100%;overflow:auto;}#src-sidebar div.files>a:hover,details.dir-entry summary:hover,#src-sidebar div.files>a:focus,details.dir-entry summary:focus{background-color:var(--src-sidebar-background-hover);}#src-sidebar div.files>a.selected{background-color:var(--src-sidebar-background-selected);}.src-sidebar-title{position:sticky;top:0;display:flex;padding:8px 8px 0 48px;margin-bottom:7px;background:var(--sidebar-background-color);border-bottom:1px solid var(--border-color);}#settings-menu,#help-button{margin-left:4px;display:flex;}#sidebar-button{display:none;line-height:0;}.hide-sidebar #sidebar-button,.src #sidebar-button{display:flex;margin-right:4px;position:fixed;left:6px;height:34px;width:34px;background-color:var(--main-background-color);z-index:1;}.src #sidebar-button{left:8px;z-index:calc(var(--desktop-sidebar-z-index) + 1);}.hide-sidebar .src #sidebar-button{position:static;}#settings-menu>a,#help-button>a,#sidebar-button>a{display:flex;align-items:center;justify-content:center;background-color:var(--button-background-color);border:1px solid var(--border-color);border-radius:2px;color:var(--settings-button-color);font-size:20px;width:33px;}#settings-menu>a:hover,#settings-menu>a:focus,#help-button>a:hover,#help-button>a:focus,#sidebar-button>a:hover,#sidebar-button>a:focus{border-color:var(--settings-button-border-focus);}#settings-menu>a{line-height:0;font-size:0;}#settings-menu>a:before{content:url('wheel-63255fc4502dca9a.svg');width:22px;height:22px;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}#copy-path{color:var(--copy-path-button-color);background:var(--main-background-color);height:34px;width:33px;margin-left:10px;padding:0;padding-left:2px;border:0;font-size:0;}#copy-path::before{filter:var(--copy-path-img-filter);content:url('clipboard-24048e6d87f63d07.svg');}#copy-path:hover::before{filter:var(--copy-path-img-hover-filter);}#copy-path.clicked::before{content:url('data:image/svg+xml,\ + \ + ');}@keyframes rotating{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}#settings-menu.rotate>a img{animation:rotating 2s linear infinite;}kbd{display:inline-block;padding:3px 5px;font:15px monospace;line-height:10px;vertical-align:middle;border:solid 1px var(--border-color);border-radius:3px;color:var(--kbd-color);background-color:var(--kbd-background);box-shadow:inset 0 -1px 0 var(--kbd-box-shadow-color);}ul.all-items>li{list-style:none;}details.dir-entry{padding-left:4px;}details.dir-entry>summary{margin:0 0 0 -4px;padding:0 0 0 4px;cursor:pointer;}details.dir-entry div.folders,details.dir-entry div.files{padding-left:23px;}details.dir-entry a{display:block;}details.toggle{contain:layout;position:relative;}details.toggle>summary.hideme{cursor:pointer;font-size:1rem;}details.toggle>summary{list-style:none;outline:none;}details.toggle>summary::-webkit-details-marker,details.toggle>summary::marker{display:none;}details.toggle>summary.hideme>span{margin-left:9px;}details.toggle>summary::before{background:url('data:image/svg+xml,') no-repeat top left;content:"";cursor:pointer;width:16px;height:16px;display:inline-block;vertical-align:middle;opacity:.5;filter:var(--toggle-filter);}details.toggle>summary.hideme>span,.more-examples-toggle summary,.more-examples-toggle .hide-more{color:var(--toggles-color);}details.toggle>summary::after{content:"Expand";overflow:hidden;width:0;height:0;position:absolute;}details.toggle>summary.hideme::after{content:"";}details.toggle>summary:focus::before,details.toggle>summary:hover::before{opacity:1;}details.toggle>summary:focus-visible::before{outline:1px dotted #000;outline-offset:1px;}details.non-exhaustive{margin-bottom:8px;}details.toggle>summary.hideme::before{position:relative;}details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;top:4px;}.impl-items>details.toggle>summary:not(.hideme)::before{position:absolute;left:-24px;}details.toggle[open] >summary.hideme{position:absolute;}details.toggle[open] >summary.hideme>span{display:none;}details.toggle[open] >summary::before{background:url('data:image/svg+xml,') no-repeat top left;}details.toggle[open] >summary::after{content:"Collapse";}.docblock summary>*{display:inline-block;}.docblock>.example-wrap:first-child .tooltip{margin-top:16px;}.src #sidebar-button>a:before,.sidebar-menu-toggle:before{content:url('data:image/svg+xml,\ + ');opacity:0.75;}.sidebar-menu-toggle:hover:before,.sidebar-menu-toggle:active:before,.sidebar-menu-toggle:focus:before{opacity:1;}.src #sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');opacity:0.75;}@media (max-width:850px){#search-tabs .count{display:block;}}@media (max-width:700px){*[id]{scroll-margin-top:45px;}.rustdoc{display:block;}main{padding-left:15px;padding-top:0px;}.main-heading{flex-direction:column;}.out-of-band{text-align:left;margin-left:initial;padding:initial;}.out-of-band .since::before{content:"Since ";}.sidebar .logo-container,.sidebar .location,.sidebar-resizer{display:none;}.sidebar{position:fixed;top:45px;left:-1000px;z-index:11;height:calc(100vh - 45px);width:200px;}.src main,.rustdoc.src .sidebar{top:0;padding:0;height:100vh;border:0;}.src .search-form{margin-left:40px;}.hide-sidebar .search-form{margin-left:32px;}.hide-sidebar .src .search-form{margin-left:0;}.sidebar.shown,.src-sidebar-expanded .src .sidebar,.rustdoc:not(.src) .sidebar:focus-within{left:0;}.mobile-topbar h2{padding-bottom:0;margin:auto 0.5em auto auto;overflow:hidden;font-size:24px;white-space:nowrap;text-overflow:ellipsis;}.mobile-topbar .logo-container>img{max-width:35px;max-height:35px;margin:5px 0 5px 20px;}.mobile-topbar{display:flex;flex-direction:row;position:sticky;z-index:10;font-size:2rem;height:45px;width:100%;left:0;top:0;}.hide-sidebar .mobile-topbar{display:none;}.sidebar-menu-toggle{width:45px;border:none;line-height:0;}.hide-sidebar .sidebar-menu-toggle{display:none;}.sidebar-elems{margin-top:1em;}.anchor{display:none !important;}#main-content>details.toggle>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}#copy-path,#help-button{display:none;}#sidebar-button>a:before{content:url('data:image/svg+xml,\ + \ + \ + ');width:22px;height:22px;}.sidebar-menu-toggle:before{filter:var(--mobile-sidebar-menu-filter);}.sidebar-menu-toggle:hover{background:var(--main-background-color);}.item-table,.item-row,.item-table>li,.item-table>li>div,.search-results>a,.search-results>a>div{display:block;}.search-results>a{padding:5px 0px;}.search-results>a>div.desc,.item-table>li>div.desc{padding-left:2em;}.search-results .result-name{display:block;}.search-results .result-name .typename{width:initial;margin-right:0;}.search-results .result-name .typename,.search-results .result-name .path{display:inline;}.src-sidebar-expanded .src .sidebar{position:fixed;max-width:100vw;width:100vw;}.src .src-sidebar-title{padding-top:0;}details.toggle:not(.top-doc)>summary{margin-left:10px;}.impl-items>details.toggle>summary:not(.hideme)::before,#main-content>details.toggle:not(.top-doc)>summary::before,#main-content>div>details.toggle>summary::before{left:-11px;}.impl-items>.item-info{margin-left:34px;}.src nav.sub{margin:0;padding:var(--nav-sub-mobile-padding);}}@media (min-width:701px){.scraped-example-title{position:absolute;z-index:10;background:var(--main-background-color);bottom:8px;right:5px;padding:2px 4px;box-shadow:0 0 4px var(--main-background-color);}}@media print{nav.sidebar,nav.sub,.out-of-band,a.src,#copy-path,details.toggle[open] >summary::before,details.toggle>summary::before,details.toggle.top-doc>summary{display:none;}.docblock{margin-left:0;}main{padding:10px;}}@media (max-width:464px){.docblock{margin-left:12px;}.docblock code{overflow-wrap:break-word;overflow-wrap:anywhere;}nav.sub{flex-direction:column;}.search-form{align-self:stretch;}}.variant,.implementors-toggle>summary,.impl,#implementors-list>.docblock,.impl-items>section,.impl-items>.toggle>summary,.methods>section,.methods>.toggle>summary{margin-bottom:0.75em;}.variants>.docblock,.implementors-toggle>.docblock,.impl-items>.toggle[open]:not(:last-child),.methods>.toggle[open]:not(:last-child),.implementors-toggle[open]:not(:last-child){margin-bottom:2em;}#trait-implementations-list .impl-items>.toggle:not(:last-child),#synthetic-implementations-list .impl-items>.toggle:not(:last-child),#blanket-implementations-list .impl-items>.toggle:not(:last-child){margin-bottom:1em;}.scraped-example-list .scrape-help{margin-left:10px;padding:0 4px;font-weight:normal;font-size:12px;position:relative;bottom:1px;border:1px solid var(--scrape-example-help-border-color);border-radius:50px;color:var(--scrape-example-help-color);}.scraped-example-list .scrape-help:hover{border-color:var(--scrape-example-help-hover-border-color);color:var(--scrape-example-help-hover-color);}.scraped-example{position:relative;}.scraped-example .code-wrapper{position:relative;display:flex;flex-direction:row;flex-wrap:wrap;width:100%;}.scraped-example:not(.expanded) .code-wrapper{max-height:calc(1.5em * 5 + 10px);}.scraped-example:not(.expanded) .code-wrapper pre{overflow-y:hidden;padding-bottom:0;max-height:calc(1.5em * 5 + 10px);}.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper,.more-scraped-examples .scraped-example:not(.expanded) .code-wrapper pre{max-height:calc(1.5em * 10 + 10px);}.scraped-example .code-wrapper .next,.scraped-example .code-wrapper .prev,.scraped-example .code-wrapper .expand{color:var(--main-color);position:absolute;top:0.25em;z-index:1;padding:0;background:none;border:none;-webkit-appearance:none;opacity:1;}.scraped-example .code-wrapper .prev{right:2.25em;}.scraped-example .code-wrapper .next{right:1.25em;}.scraped-example .code-wrapper .expand{right:0.25em;}.scraped-example:not(.expanded) .code-wrapper::before,.scraped-example:not(.expanded) .code-wrapper::after{content:" ";width:100%;height:5px;position:absolute;z-index:1;}.scraped-example:not(.expanded) .code-wrapper::before{top:0;background:linear-gradient(to bottom,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example:not(.expanded) .code-wrapper::after{bottom:0;background:linear-gradient(to top,var(--scrape-example-code-wrapper-background-start),var(--scrape-example-code-wrapper-background-end));}.scraped-example .code-wrapper .example-wrap{width:100%;overflow-y:hidden;margin-bottom:0;}.scraped-example:not(.expanded) .code-wrapper .example-wrap{overflow-x:hidden;}.scraped-example .example-wrap .rust span.highlight{background:var(--scrape-example-code-line-highlight);}.scraped-example .example-wrap .rust span.highlight.focus{background:var(--scrape-example-code-line-highlight-focus);}.more-examples-toggle{max-width:calc(100% + 25px);margin-top:10px;margin-left:-25px;}.more-examples-toggle .hide-more{margin-left:25px;cursor:pointer;}.more-scraped-examples{margin-left:25px;position:relative;}.toggle-line{position:absolute;top:5px;bottom:0;right:calc(100% + 10px);padding:0 4px;cursor:pointer;}.toggle-line-inner{min-width:2px;height:100%;background:var(--scrape-example-toggle-line-background);}.toggle-line:hover .toggle-line-inner{background:var(--scrape-example-toggle-line-hover-background);}.more-scraped-examples .scraped-example,.example-links{margin-top:20px;}.more-scraped-examples .scraped-example:first-child{margin-top:5px;}.example-links ul{margin-bottom:0;}:root[data-theme="light"],:root:not([data-theme]){--main-background-color:white;--main-color:black;--settings-input-color:#2196f3;--settings-input-border-color:#717171;--settings-button-color:#000;--settings-button-border-focus:#717171;--sidebar-background-color:#f5f5f5;--sidebar-background-color-hover:#e0e0e0;--code-block-background-color:#f5f5f5;--scrollbar-track-background-color:#dcdcdc;--scrollbar-thumb-background-color:rgba(36,37,39,0.6);--scrollbar-color:rgba(36,37,39,0.6) #d9d9d9;--headings-border-bottom-color:#ddd;--border-color:#e0e0e0;--button-background-color:#fff;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:none;--mobile-sidebar-menu-filter:none;--search-input-focused-border-color:#66afe9;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(35%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ad378a;--trait-link-color:#6e4fc9;--assoc-item-link-color:#3873ad;--function-link-color:#ad7c37;--macro-link-color:#068000;--keyword-link-color:#3873ad;--mod-link-color:#3873ad;--link-color:#3873ad;--sidebar-link-color:#356da4;--sidebar-current-link-background-color:#fff;--search-result-link-focus-background-color:#ccc;--search-result-border-color:#aaa3;--search-color:#000;--search-error-code-background-color:#d0cccc;--search-results-alias-color:#000;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#e6e6e6;--search-tab-button-not-selected-background:#e6e6e6;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#fff;--stab-background-color:#fff5d6;--stab-code-color:#000;--code-highlight-kw-color:#8959a8;--code-highlight-kw-2-color:#4271ae;--code-highlight-lifetime-color:#b76514;--code-highlight-prelude-color:#4271ae;--code-highlight-prelude-val-color:#c82829;--code-highlight-number-color:#718c00;--code-highlight-string-color:#718c00;--code-highlight-literal-color:#c82829;--code-highlight-attribute-color:#c82829;--code-highlight-self-color:#c82829;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8e908c;--code-highlight-doc-comment-color:#4d4d4c;--src-line-numbers-span-color:#c67e2d;--src-line-number-highlighted-background-color:#fdffd3;--test-arrow-color:#f5f5f5;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#f5f5f5;--test-arrow-hover-background-color:rgb(78,139,202);--target-background-color:#fdffd3;--target-border-color:#ad7c37;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:initial;--crate-search-div-filter:invert(100%) sepia(0%) saturate(4223%) hue-rotate(289deg) brightness(114%) contrast(76%);--crate-search-div-hover-filter:invert(44%) sepia(18%) saturate(23%) hue-rotate(317deg) brightness(96%) contrast(93%);--crate-search-hover-border:#717171;--src-sidebar-background-selected:#fff;--src-sidebar-background-hover:#e0e0e0;--table-alt-row-background-color:#f5f5f5;--codeblock-link-background:#eee;--scrape-example-toggle-line-background:#ccc;--scrape-example-toggle-line-hover-background:#999;--scrape-example-code-line-highlight:#fcffd6;--scrape-example-code-line-highlight-focus:#f6fdb0;--scrape-example-help-border-color:#555;--scrape-example-help-color:#333;--scrape-example-help-hover-border-color:#000;--scrape-example-help-hover-color:#000;--scrape-example-code-wrapper-background-start:rgba(255,255,255,1);--scrape-example-code-wrapper-background-end:rgba(255,255,255,0);--sidebar-resizer-hover:hsl(207,90%,66%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="dark"]{--main-background-color:#353535;--main-color:#ddd;--settings-input-color:#2196f3;--settings-input-border-color:#999;--settings-button-color:#000;--settings-button-border-focus:#ffb900;--sidebar-background-color:#505050;--sidebar-background-color-hover:#676767;--code-block-background-color:#2A2A2A;--scrollbar-track-background-color:#717171;--scrollbar-thumb-background-color:rgba(32,34,37,.6);--scrollbar-color:rgba(32,34,37,.6) #5a5a5a;--headings-border-bottom-color:#d2d2d2;--border-color:#e0e0e0;--button-background-color:#f0f0f0;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#008dfd;--copy-path-button-color:#999;--copy-path-img-filter:invert(50%);--copy-path-img-hover-filter:invert(65%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#2dbfb8;--trait-link-color:#b78cf2;--assoc-item-link-color:#d2991d;--function-link-color:#2bab63;--macro-link-color:#09bd00;--keyword-link-color:#d2991d;--mod-link-color:#d2991d;--link-color:#d2991d;--sidebar-link-color:#fdbf35;--sidebar-current-link-background-color:#444;--search-result-link-focus-background-color:#616161;--search-result-border-color:#aaa3;--search-color:#111;--search-error-code-background-color:#484848;--search-results-alias-color:#fff;--search-results-grey-color:#ccc;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:#252525;--search-tab-button-not-selected-background:#252525;--search-tab-button-selected-border-top-color:#0089ff;--search-tab-button-selected-background:#353535;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ab8ac1;--code-highlight-kw-2-color:#769acb;--code-highlight-lifetime-color:#d97f26;--code-highlight-prelude-color:#769acb;--code-highlight-prelude-val-color:#ee6868;--code-highlight-number-color:#83a300;--code-highlight-string-color:#83a300;--code-highlight-literal-color:#ee6868;--code-highlight-attribute-color:#ee6868;--code-highlight-self-color:#ee6868;--code-highlight-macro-color:#3e999f;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#8d8d8b;--code-highlight-doc-comment-color:#8ca375;--src-line-numbers-span-color:#3b91e2;--src-line-number-highlighted-background-color:#0a042f;--test-arrow-color:#dedede;--test-arrow-background-color:rgba(78,139,202,0.2);--test-arrow-hover-color:#dedede;--test-arrow-hover-background-color:#4e8bca;--target-background-color:#494a3d;--target-border-color:#bb7410;--kbd-color:#000;--kbd-background:#fafbfc;--kbd-box-shadow-color:#c6cbd1;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(94%) sepia(0%) saturate(721%) hue-rotate(255deg) brightness(90%) contrast(90%);--crate-search-div-hover-filter:invert(69%) sepia(60%) saturate(6613%) hue-rotate(184deg) brightness(100%) contrast(91%);--crate-search-hover-border:#2196f3;--src-sidebar-background-selected:#333;--src-sidebar-background-hover:#444;--table-alt-row-background-color:#2a2a2a;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(53,53,53,1);--scrape-example-code-wrapper-background-end:rgba(53,53,53,0);--sidebar-resizer-hover:hsl(207,30%,54%);--sidebar-resizer-active:hsl(207,90%,54%);}:root[data-theme="ayu"]{--main-background-color:#0f1419;--main-color:#c5c5c5;--settings-input-color:#ffb454;--settings-input-border-color:#999;--settings-button-color:#fff;--settings-button-border-focus:#e0e0e0;--sidebar-background-color:#14191f;--sidebar-background-color-hover:rgba(70,70,70,0.33);--code-block-background-color:#191f26;--scrollbar-track-background-color:transparent;--scrollbar-thumb-background-color:#5c6773;--scrollbar-color:#5c6773 #24292f;--headings-border-bottom-color:#5c6773;--border-color:#5c6773;--button-background-color:#141920;--right-side-color:grey;--code-attribute-color:#999;--toggles-color:#999;--toggle-filter:invert(100%);--mobile-sidebar-menu-filter:invert(100%);--search-input-focused-border-color:#5c6773;--copy-path-button-color:#fff;--copy-path-img-filter:invert(70%);--copy-path-img-hover-filter:invert(100%);--codeblock-error-hover-color:rgb(255,0,0);--codeblock-error-color:rgba(255,0,0,.5);--codeblock-ignore-hover-color:rgb(255,142,0);--codeblock-ignore-color:rgba(255,142,0,.6);--warning-border-color:#ff8e00;--type-link-color:#ffa0a5;--trait-link-color:#39afd7;--assoc-item-link-color:#39afd7;--function-link-color:#fdd687;--macro-link-color:#a37acc;--keyword-link-color:#39afd7;--mod-link-color:#39afd7;--link-color:#39afd7;--sidebar-link-color:#53b1db;--sidebar-current-link-background-color:transparent;--search-result-link-focus-background-color:#3c3c3c;--search-result-border-color:#aaa3;--search-color:#fff;--search-error-code-background-color:#4f4c4c;--search-results-alias-color:#c5c5c5;--search-results-grey-color:#999;--search-tab-title-count-color:#888;--search-tab-button-not-selected-border-top-color:none;--search-tab-button-not-selected-background:transparent !important;--search-tab-button-selected-border-top-color:none;--search-tab-button-selected-background:#141920 !important;--stab-background-color:#314559;--stab-code-color:#e6e1cf;--code-highlight-kw-color:#ff7733;--code-highlight-kw-2-color:#ff7733;--code-highlight-lifetime-color:#ff7733;--code-highlight-prelude-color:#69f2df;--code-highlight-prelude-val-color:#ff7733;--code-highlight-number-color:#b8cc52;--code-highlight-string-color:#b8cc52;--code-highlight-literal-color:#ff7733;--code-highlight-attribute-color:#e6e1cf;--code-highlight-self-color:#36a3d9;--code-highlight-macro-color:#a37acc;--code-highlight-question-mark-color:#ff9011;--code-highlight-comment-color:#788797;--code-highlight-doc-comment-color:#a1ac88;--src-line-numbers-span-color:#5c6773;--src-line-number-highlighted-background-color:rgba(255,236,164,0.06);--test-arrow-color:#788797;--test-arrow-background-color:rgba(57,175,215,0.09);--test-arrow-hover-color:#c5c5c5;--test-arrow-hover-background-color:rgba(57,175,215,0.368);--target-background-color:rgba(255,236,164,0.06);--target-border-color:rgba(255,180,76,0.85);--kbd-color:#c5c5c5;--kbd-background:#314559;--kbd-box-shadow-color:#5c6773;--rust-logo-filter:drop-shadow(1px 0 0px #fff) drop-shadow(0 1px 0 #fff) drop-shadow(-1px 0 0 #fff) drop-shadow(0 -1px 0 #fff);--crate-search-div-filter:invert(41%) sepia(12%) saturate(487%) hue-rotate(171deg) brightness(94%) contrast(94%);--crate-search-div-hover-filter:invert(98%) sepia(12%) saturate(81%) hue-rotate(343deg) brightness(113%) contrast(76%);--crate-search-hover-border:#e0e0e0;--src-sidebar-background-selected:#14191f;--src-sidebar-background-hover:#14191f;--table-alt-row-background-color:#191f26;--codeblock-link-background:#333;--scrape-example-toggle-line-background:#999;--scrape-example-toggle-line-hover-background:#c5c5c5;--scrape-example-code-line-highlight:#5b3b01;--scrape-example-code-line-highlight-focus:#7c4b0f;--scrape-example-help-border-color:#aaa;--scrape-example-help-color:#eee;--scrape-example-help-hover-border-color:#fff;--scrape-example-help-hover-color:#fff;--scrape-example-code-wrapper-background-start:rgba(15,20,25,1);--scrape-example-code-wrapper-background-end:rgba(15,20,25,0);--sidebar-resizer-hover:hsl(34,50%,33%);--sidebar-resizer-active:hsl(34,100%,66%);}:root[data-theme="ayu"] h1,:root[data-theme="ayu"] h2,:root[data-theme="ayu"] h3,:root[data-theme="ayu"] h4,:where(:root[data-theme="ayu"]) h1 a,:root[data-theme="ayu"] .sidebar h2 a,:root[data-theme="ayu"] .sidebar h3 a{color:#fff;}:root[data-theme="ayu"] .docblock code{color:#ffb454;}:root[data-theme="ayu"] .docblock a>code{color:#39AFD7 !important;}:root[data-theme="ayu"] .code-header,:root[data-theme="ayu"] .docblock pre>code,:root[data-theme="ayu"] pre,:root[data-theme="ayu"] pre>code,:root[data-theme="ayu"] .item-info code,:root[data-theme="ayu"] .rustdoc.source .example-wrap{color:#e6e1cf;}:root[data-theme="ayu"] .sidebar .current,:root[data-theme="ayu"] .sidebar .current a,:root[data-theme="ayu"] .sidebar a:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:hover,:root[data-theme="ayu"] details.dir-entry summary:hover,:root[data-theme="ayu"] #src-sidebar div.files>a:focus,:root[data-theme="ayu"] details.dir-entry summary:focus,:root[data-theme="ayu"] #src-sidebar div.files>a.selected{color:#ffb44c;}:root[data-theme="ayu"] .sidebar-elems .location{color:#ff7733;}:root[data-theme="ayu"] .src-line-numbers .line-highlighted{color:#708090;padding-right:7px;border-right:1px solid #ffb44c;}:root[data-theme="ayu"] .search-results a:hover,:root[data-theme="ayu"] .search-results a:focus{color:#fff !important;background-color:#3c3c3c;}:root[data-theme="ayu"] .search-results a{color:#0096cf;}:root[data-theme="ayu"] .search-results a div.desc{color:#c5c5c5;}:root[data-theme="ayu"] .result-name .primitive>i,:root[data-theme="ayu"] .result-name .keyword>i{color:#788797;}:root[data-theme="ayu"] #search-tabs>button.selected{border-bottom:1px solid #ffb44c !important;border-top:none;}:root[data-theme="ayu"] #search-tabs>button:not(.selected){border:none;background-color:transparent !important;}:root[data-theme="ayu"] #search-tabs>button:hover{border-bottom:1px solid rgba(242,151,24,0.3);}:root[data-theme="ayu"] #settings-menu>a img,:root[data-theme="ayu"] #sidebar-button>a:before{filter:invert(100);} \ No newline at end of file diff --git a/docs/macos_docs/static.files/search-bf21c90c8c1d92b1.js b/docs/macos_docs/static.files/search-bf21c90c8c1d92b1.js new file mode 100644 index 00000000..81d04e0e --- /dev/null +++ b/docs/macos_docs/static.files/search-bf21c90c8c1d92b1.js @@ -0,0 +1,5 @@ +"use strict";if(!Array.prototype.toSpliced){Array.prototype.toSpliced=function(){const me=this.slice();Array.prototype.splice.apply(me,arguments);return me}}(function(){const itemTypes=["keyword","primitive","mod","externcrate","import","struct","enum","fn","type","static","trait","impl","tymethod","method","structfield","variant","macro","associatedtype","constant","associatedconstant","union","foreigntype","existential","attr","derive","traitalias","generic",];const longItemTypes=["keyword","primitive type","module","extern crate","re-export","struct","enum","function","type alias","static","trait","","trait method","method","struct field","enum variant","macro","assoc type","constant","assoc const","union","foreign type","existential type","attribute macro","derive macro","trait alias",];const TY_GENERIC=itemTypes.indexOf("generic");const TY_IMPORT=itemTypes.indexOf("import");const ROOT_PATH=typeof window!=="undefined"?window.rootPath:"../";const UNBOXING_LIMIT=5;function printTab(nb){let iter=0;let foundCurrentTab=false;let foundCurrentResultSet=false;onEachLazy(document.getElementById("search-tabs").childNodes,elem=>{if(nb===iter){addClass(elem,"selected");foundCurrentTab=true}else{removeClass(elem,"selected")}iter+=1});const isTypeSearch=(nb>0||iter===1);iter=0;onEachLazy(document.getElementById("results").childNodes,elem=>{if(nb===iter){addClass(elem,"active");foundCurrentResultSet=true}else{removeClass(elem,"active")}iter+=1});if(foundCurrentTab&&foundCurrentResultSet){searchState.currentTab=nb;const correctionsElem=document.getElementsByClassName("search-corrections");if(isTypeSearch){removeClass(correctionsElem[0],"hidden")}else{addClass(correctionsElem[0],"hidden")}}else if(nb!==0){printTab(0)}}const editDistanceState={current:[],prev:[],prevPrev:[],calculate:function calculate(a,b,limit){if(a.lengthlimit){return limit+1}while(b.length>0&&b[0]===a[0]){a=a.substring(1);b=b.substring(1)}while(b.length>0&&b[b.length-1]===a[a.length-1]){a=a.substring(0,a.length-1);b=b.substring(0,b.length-1)}if(b.length===0){return minDist}const aLength=a.length;const bLength=b.length;for(let i=0;i<=bLength;++i){this.current[i]=0;this.prev[i]=i;this.prevPrev[i]=Number.MAX_VALUE}for(let i=1;i<=aLength;++i){this.current[0]=i;const aIdx=i-1;for(let j=1;j<=bLength;++j){const bIdx=j-1;const substitutionCost=a[aIdx]===b[bIdx]?0:1;this.current[j]=Math.min(this.prev[j]+1,this.current[j-1]+1,this.prev[j-1]+substitutionCost,);if((i>1)&&(j>1)&&(a[aIdx]===b[bIdx-1])&&(a[aIdx-1]===b[bIdx])){this.current[j]=Math.min(this.current[j],this.prevPrev[j-2]+1,)}}const prevPrevTmp=this.prevPrev;this.prevPrev=this.prev;this.prev=this.current;this.current=prevPrevTmp}const distance=this.prev[bLength];return distance<=limit?distance:(limit+1)},};function editDistance(a,b,limit){return editDistanceState.calculate(a,b,limit)}function initSearch(rawSearchIndex){const MAX_RESULTS=200;const NO_TYPE_FILTER=-1;let searchIndex;let searchIndexDeprecated;let searchIndexEmptyDesc;let functionTypeFingerprint;let currentResults;const typeNameIdMap=new Map();const ALIASES=new Map();const typeNameIdOfArray=buildTypeMapIndex("array");const typeNameIdOfSlice=buildTypeMapIndex("slice");const typeNameIdOfArrayOrSlice=buildTypeMapIndex("[]");const typeNameIdOfTuple=buildTypeMapIndex("tuple");const typeNameIdOfUnit=buildTypeMapIndex("unit");const typeNameIdOfTupleOrUnit=buildTypeMapIndex("()");const typeNameIdOfFn=buildTypeMapIndex("fn");const typeNameIdOfFnMut=buildTypeMapIndex("fnmut");const typeNameIdOfFnOnce=buildTypeMapIndex("fnonce");const typeNameIdOfHof=buildTypeMapIndex("->");function buildTypeMapIndex(name,isAssocType){if(name===""||name===null){return null}if(typeNameIdMap.has(name)){const obj=typeNameIdMap.get(name);obj.assocOnly=isAssocType&&obj.assocOnly;return obj.id}else{const id=typeNameIdMap.size;typeNameIdMap.set(name,{id,assocOnly:isAssocType});return id}}function isSpecialStartCharacter(c){return"<\"".indexOf(c)!==-1}function isEndCharacter(c){return"=,>-])".indexOf(c)!==-1}function itemTypeFromName(typename){const index=itemTypes.findIndex(i=>i===typename);if(index<0){throw["Unknown type filter ",typename]}return index}function getStringElem(query,parserState,isInGenerics){if(isInGenerics){throw["Unexpected ","\""," in generics"]}else if(query.literalSearch){throw["Cannot have more than one literal search element"]}else if(parserState.totalElems-parserState.genericsElems>0){throw["Cannot use literal search when there is more than one element"]}parserState.pos+=1;const start=parserState.pos;const end=getIdentEndPosition(parserState);if(parserState.pos>=parserState.length){throw["Unclosed ","\""]}else if(parserState.userQuery[end]!=="\""){throw["Unexpected ",parserState.userQuery[end]," in a string element"]}else if(start===end){throw["Cannot have empty string element"]}parserState.pos+=1;query.literalSearch=true}function isPathStart(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="::"}function isReturnArrow(parserState){return parserState.userQuery.slice(parserState.pos,parserState.pos+2)==="->"}function isIdentCharacter(c){return(c==="_"||(c>="0"&&c<="9")||(c>="a"&&c<="z")||(c>="A"&&c<="Z"))}function isSeparatorCharacter(c){return c===","||c==="="}function isPathSeparator(c){return c===":"||c===" "}function prevIs(parserState,lookingFor){let pos=parserState.pos;while(pos>0){const c=parserState.userQuery[pos-1];if(c===lookingFor){return true}else if(c!==" "){break}pos-=1}return false}function isLastElemGeneric(elems,parserState){return(elems.length>0&&elems[elems.length-1].generics.length>0)||prevIs(parserState,">")}function skipWhitespace(parserState){while(parserState.pos0){throw["Cannot have more than one element if you use quotes"]}const typeFilter=parserState.typeFilter;parserState.typeFilter=null;if(name==="!"){if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive never type ","!"," and ",typeFilter," both specified",]}if(generics.length!==0){throw["Never type ","!"," does not accept generic parameters",]}const bindingName=parserState.isInBinding;parserState.isInBinding=null;return makePrimitiveElement("never",{bindingName})}const quadcolon=/::\s*::/.exec(path);if(path.startsWith("::")){throw["Paths cannot start with ","::"]}else if(path.endsWith("::")){throw["Paths cannot end with ","::"]}else if(quadcolon!==null){throw["Unexpected ",quadcolon[0]]}const pathSegments=path.split(/(?:::\s*)|(?:\s+(?:::\s*)?)/);if(pathSegments.length===0||(pathSegments.length===1&&pathSegments[0]==="")){if(generics.length>0||prevIs(parserState,">")){throw["Found generics without a path"]}else{throw["Unexpected ",parserState.userQuery[parserState.pos]]}}for(const[i,pathSegment]of pathSegments.entries()){if(pathSegment==="!"){if(i!==0){throw["Never type ","!"," is not associated item"]}pathSegments[i]="never"}}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}const bindingName=parserState.isInBinding;parserState.isInBinding=null;const bindings=new Map();const pathLast=pathSegments[pathSegments.length-1];return{name:name.trim(),id:null,fullPath:pathSegments,pathWithoutLast:pathSegments.slice(0,pathSegments.length-1),pathLast,normalizedPathLast:pathLast.replace(/_/g,""),generics:generics.filter(gen=>{if(gen.bindingName!==null){if(gen.name!==null){gen.bindingName.generics.unshift(gen)}bindings.set(gen.bindingName.name,gen.bindingName.generics);return false}return true}),bindings,typeFilter,bindingName,}}function getIdentEndPosition(parserState){const start=parserState.pos;let end=parserState.pos;let foundExclamation=-1;while(parserState.pos0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}else{throw["Unexpected ",c]}}parserState.pos+=1;end=parserState.pos}if(foundExclamation!==-1&&foundExclamation!==start&&isIdentCharacter(parserState.userQuery[foundExclamation-1])){if(parserState.typeFilter===null){parserState.typeFilter="macro"}else if(parserState.typeFilter!=="macro"){throw["Invalid search type: macro ","!"," and ",parserState.typeFilter," both specified",]}end=foundExclamation}return end}function getFilteredNextElem(query,parserState,elems,isInGenerics){const start=parserState.pos;if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){throw["Expected type filter before ",":"]}getNextElem(query,parserState,elems,isInGenerics);if(parserState.userQuery[parserState.pos]===":"&&!isPathStart(parserState)){if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}if(elems.length===0){throw["Expected type filter before ",":"]}else if(query.literalSearch){throw["Cannot use quotes on type filter"]}const typeFilterElem=elems.pop();checkExtraTypeFilterCharacters(start,parserState);parserState.typeFilter=typeFilterElem.name;parserState.pos+=1;parserState.totalElems-=1;query.literalSearch=false;getNextElem(query,parserState,elems,isInGenerics)}}function getNextElem(query,parserState,elems,isInGenerics){const generics=[];skipWhitespace(parserState);let start=parserState.pos;let end;if("[(".indexOf(parserState.userQuery[parserState.pos])!==-1){let endChar=")";let name="()";let friendlyName="tuple";if(parserState.userQuery[parserState.pos]==="["){endChar="]";name="[]";friendlyName="slice"}parserState.pos+=1;const{foundSeparator}=getItemsBefore(query,parserState,generics,endChar);const typeFilter=parserState.typeFilter;const bindingName=parserState.isInBinding;parserState.typeFilter=null;parserState.isInBinding=null;for(const gen of generics){if(gen.bindingName!==null){throw["Type parameter ","=",` cannot be within ${friendlyName} `,name]}}if(name==="()"&&!foundSeparator&&generics.length===1&&typeFilter===null){elems.push(generics[0])}else if(name==="()"&&generics.length===1&&generics[0].name==="->"){generics[0].typeFilter=typeFilter;elems.push(generics[0])}else{if(typeFilter!==null&&typeFilter!=="primitive"){throw["Invalid search type: primitive ",name," and ",typeFilter," both specified",]}parserState.totalElems+=1;if(isInGenerics){parserState.genericsElems+=1}elems.push(makePrimitiveElement(name,{bindingName,generics}))}}else{const isStringElem=parserState.userQuery[start]==="\"";if(isStringElem){start+=1;getStringElem(query,parserState,isInGenerics);end=parserState.pos-1}else{end=getIdentEndPosition(parserState)}if(parserState.pos=end){throw["Found generics without a path"]}parserState.pos+=1;getItemsBefore(query,parserState,generics,">")}else if(parserState.pos=end){throw["Found generics without a path"]}if(parserState.isInBinding){throw["Unexpected ","("," after ","="]}parserState.pos+=1;const typeFilter=parserState.typeFilter;parserState.typeFilter=null;getItemsBefore(query,parserState,generics,")");skipWhitespace(parserState);if(isReturnArrow(parserState)){parserState.pos+=2;skipWhitespace(parserState);getFilteredNextElem(query,parserState,generics,isInGenerics);generics[generics.length-1].bindingName=makePrimitiveElement("output")}else{generics.push(makePrimitiveElement(null,{bindingName:makePrimitiveElement("output"),typeFilter:null,}))}parserState.typeFilter=typeFilter}if(isStringElem){skipWhitespace(parserState)}if(start>=end&&generics.length===0){return}if(parserState.userQuery[parserState.pos]==="="){if(parserState.isInBinding){throw["Cannot write ","="," twice in a binding"]}if(!isInGenerics){throw["Type parameter ","="," must be within generics list"]}const name=parserState.userQuery.slice(start,end).trim();if(name==="!"){throw["Type parameter ","="," key cannot be ","!"," never type"]}if(name.includes("!")){throw["Type parameter ","="," key cannot be ","!"," macro"]}if(name.includes("::")){throw["Type parameter ","="," key cannot contain ","::"," path"]}if(name.includes(":")){throw["Type parameter ","="," key cannot contain ",":"," type"]}parserState.isInBinding={name,generics}}else{elems.push(createQueryElement(query,parserState,parserState.userQuery.slice(start,end),generics,isInGenerics,),)}}}function getItemsBefore(query,parserState,elems,endChar){let foundStopChar=true;let foundSeparator=false;const oldTypeFilter=parserState.typeFilter;parserState.typeFilter=null;const oldIsInBinding=parserState.isInBinding;parserState.isInBinding=null;let hofParameters=null;let extra="";if(endChar===">"){extra="<"}else if(endChar==="]"){extra="["}else if(endChar===")"){extra="("}else if(endChar===""){extra="->"}else{extra=endChar}while(parserState.pos"," after ","="]}hofParameters=[...elems];elems.length=0;parserState.pos+=2;foundStopChar=true;foundSeparator=false;continue}else if(c===" "){parserState.pos+=1;continue}else if(isSeparatorCharacter(c)){parserState.pos+=1;foundStopChar=true;foundSeparator=true;continue}else if(c===":"&&isPathStart(parserState)){throw["Unexpected ","::",": paths cannot start with ","::"]}else if(isEndCharacter(c)){throw["Unexpected ",c," after ",extra]}if(!foundStopChar){let extra=[];if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(endChar!==""){throw["Expected ",",",", ","=",", or ",endChar,...extra,", found ",c,]}throw["Expected ",","," or ","=",...extra,", found ",c,]}const posBefore=parserState.pos;getFilteredNextElem(query,parserState,elems,endChar!=="");if(endChar!==""&&parserState.pos>=parserState.length){throw["Unclosed ",extra]}if(posBefore===parserState.pos){parserState.pos+=1}foundStopChar=false}if(parserState.pos>=parserState.length&&endChar!==""){throw["Unclosed ",extra]}parserState.pos+=1;if(hofParameters){foundSeparator=false;if([...elems,...hofParameters].some(x=>x.bindingName)||parserState.isInBinding){throw["Unexpected ","="," within ","->"]}const hofElem=makePrimitiveElement("->",{generics:hofParameters,bindings:new Map([["output",[...elems]]]),typeFilter:null,});elems.length=0;elems[0]=hofElem}parserState.typeFilter=oldTypeFilter;parserState.isInBinding=oldIsInBinding;return{foundSeparator}}function checkExtraTypeFilterCharacters(start,parserState){const query=parserState.userQuery.slice(start,parserState.pos).trim();for(const c in query){if(!isIdentCharacter(query[c])){throw["Unexpected ",query[c]," in type filter (before ",":",")",]}}}function parseInput(query,parserState){let foundStopChar=true;while(parserState.pos"){if(isReturnArrow(parserState)){break}throw["Unexpected ",c," (did you mean ","->","?)"]}else if(parserState.pos>0){throw["Unexpected ",c," after ",parserState.userQuery[parserState.pos-1]]}throw["Unexpected ",c]}else if(c===" "){skipWhitespace(parserState);continue}if(!foundStopChar){let extra="";if(isLastElemGeneric(query.elems,parserState)){extra=[" after ",">"]}else if(prevIs(parserState,"\"")){throw["Cannot have more than one element if you use quotes"]}if(parserState.typeFilter!==null){throw["Expected ",","," or ","->",...extra,", found ",c,]}throw["Expected ",",",", ",":"," or ","->",...extra,", found ",c,]}const before=query.elems.length;getFilteredNextElem(query,parserState,query.elems,false);if(query.elems.length===before){parserState.pos+=1}foundStopChar=false}if(parserState.typeFilter!==null){throw["Unexpected ",":"," (expected path after type filter ",parserState.typeFilter+":",")",]}while(parserState.pos"]}break}else{parserState.pos+=1}}}function newParsedQuery(userQuery){return{original:userQuery,userQuery:userQuery.toLowerCase(),elems:[],returned:[],foundElems:0,totalElems:0,literalSearch:false,error:null,correction:null,proposeCorrectionFrom:null,proposeCorrectionTo:null,typeFingerprint:new Uint32Array(4),}}function buildUrl(search,filterCrates){let extra="?search="+encodeURIComponent(search);if(filterCrates!==null){extra+="&filter-crate="+encodeURIComponent(filterCrates)}return getNakedUrl()+extra+window.location.hash}function getFilterCrates(){const elem=document.getElementById("crate-search");if(elem&&elem.value!=="all crates"&&rawSearchIndex.has(elem.value)){return elem.value}return null}function parseQuery(userQuery){function convertTypeFilterOnElem(elem){if(elem.typeFilter!==null){let typeFilter=elem.typeFilter;if(typeFilter==="const"){typeFilter="constant"}elem.typeFilter=itemTypeFromName(typeFilter)}else{elem.typeFilter=NO_TYPE_FILTER}for(const elem2 of elem.generics){convertTypeFilterOnElem(elem2)}for(const constraints of elem.bindings.values()){for(const constraint of constraints){convertTypeFilterOnElem(constraint)}}}userQuery=userQuery.trim().replace(/\r|\n|\t/g," ");const parserState={length:userQuery.length,pos:0,totalElems:0,genericsElems:0,typeFilter:null,isInBinding:null,userQuery:userQuery.toLowerCase(),};let query=newParsedQuery(userQuery);try{parseInput(query,parserState);for(const elem of query.elems){convertTypeFilterOnElem(elem)}for(const elem of query.returned){convertTypeFilterOnElem(elem)}}catch(err){query=newParsedQuery(userQuery);query.error=err;return query}if(!query.literalSearch){query.literalSearch=parserState.totalElems>1}query.foundElems=query.elems.length+query.returned.length;query.totalElems=parserState.totalElems;return query}function createQueryResults(results_in_args,results_returned,results_others,parsedQuery){return{"in_args":results_in_args,"returned":results_returned,"others":results_others,"query":parsedQuery,}}async function execQuery(parsedQuery,filterCrates,currentCrate){const results_others=new Map(),results_in_args=new Map(),results_returned=new Map();function transformResults(results){const duplicates=new Set();const out=[];for(const result of results){if(result.id!==-1){const obj=searchIndex[result.id];obj.dist=result.dist;const res=buildHrefAndPath(obj);obj.displayPath=pathSplitter(res[0]);obj.fullPath=res[2]+"|"+obj.ty;if(duplicates.has(obj.fullPath)){continue}if(obj.ty===TY_IMPORT&&duplicates.has(res[2])){continue}if(duplicates.has(res[2]+"|"+TY_IMPORT)){continue}duplicates.add(obj.fullPath);duplicates.add(res[2]);obj.href=res[1];out.push(obj);if(out.length>=MAX_RESULTS){break}}}return out}async function sortResults(results,isType,preferredCrate){const userQuery=parsedQuery.userQuery;const result_list=[];for(const result of results.values()){result.item=searchIndex[result.id];result.word=searchIndex[result.id].word;result_list.push(result)}result_list.sort((aaa,bbb)=>{let a,b;a=(aaa.word!==userQuery);b=(bbb.word!==userQuery);if(a!==b){return a-b}a=(aaa.index<0);b=(bbb.index<0);if(a!==b){return a-b}a=aaa.path_dist;b=bbb.path_dist;if(a!==b){return a-b}a=aaa.index;b=bbb.index;if(a!==b){return a-b}a=(aaa.dist);b=(bbb.dist);if(a!==b){return a-b}a=searchIndexDeprecated.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexDeprecated.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=(aaa.item.crate!==preferredCrate);b=(bbb.item.crate!==preferredCrate);if(a!==b){return a-b}a=aaa.word.length;b=bbb.word.length;if(a!==b){return a-b}a=aaa.word;b=bbb.word;if(a!==b){return(a>b?+1:-1)}a=searchIndexEmptyDesc.get(aaa.item.crate).contains(aaa.item.bitIndex);b=searchIndexEmptyDesc.get(bbb.item.crate).contains(bbb.item.bitIndex);if(a!==b){return a-b}a=aaa.item.ty;b=bbb.item.ty;if(a!==b){return a-b}a=aaa.item.path;b=bbb.item.path;if(a!==b){return(a>b?+1:-1)}return 0});return transformResults(result_list)}function unifyFunctionTypes(fnTypesIn,queryElems,whereClause,mgensIn,solutionCb,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}const mgens=mgensIn===null?null:new Map(mgensIn);if(queryElems.length===0){return!solutionCb||solutionCb(mgens)}if(!fnTypesIn||fnTypesIn.length===0){return false}const ql=queryElems.length;const fl=fnTypesIn.length;if(ql===1&&queryElems[0].generics.length===0&&queryElems[0].bindings.size===0){const queryElem=queryElems[0];for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}if(fnType.id<0&&queryElem.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==queryElem.id){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,queryElem.id);if(!solutionCb||solutionCb(mgensScratch)){return true}}else if(!solutionCb||solutionCb(mgens?new Map(mgens):null)){return true}}for(const fnType of fnTypesIn){if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}if(fnType.id<0){if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){continue}const mgensScratch=new Map(mgens);mgensScratch.set(fnType.id,0);if(unifyFunctionTypes(whereClause[(-fnType.id)-1],queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,)){return true}}else if(unifyFunctionTypes([...fnType.generics,...Array.from(fnType.bindings.values()).flat()],queryElems,whereClause,mgens?new Map(mgens):null,solutionCb,unboxingDepth+1,)){return true}}return false}const fnTypes=fnTypesIn.slice();const flast=fl-1;const qlast=ql-1;const queryElem=queryElems[qlast];let queryElemsTmp=null;for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgens)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==queryElem.id){continue}mgensScratch.set(fnType.id,queryElem.id)}else{mgensScratch=mgens}fnTypes[i]=fnTypes[flast];fnTypes.length=flast;if(!queryElemsTmp){queryElemsTmp=queryElems.slice(0,qlast)}const passesUnification=unifyFunctionTypes(fnTypes,queryElemsTmp,whereClause,mgensScratch,mgensScratch=>{if(fnType.generics.length===0&&queryElem.generics.length===0&&fnType.bindings.size===0&&queryElem.bindings.size===0){return!solutionCb||solutionCb(mgensScratch)}const solution=unifyFunctionTypeCheckBindings(fnType,queryElem,whereClause,mgensScratch,unboxingDepth,);if(!solution){return false}const simplifiedGenerics=solution.simplifiedGenerics;for(const simplifiedMgens of solution.mgens){const passesUnification=unifyFunctionTypes(simplifiedGenerics,queryElem.generics,whereClause,simplifiedMgens,solutionCb,unboxingDepth,);if(passesUnification){return true}}return false},unboxingDepth,);if(passesUnification){return true}fnTypes[flast]=fnTypes[i];fnTypes[i]=fnType;fnTypes.length=fl}for(let i=flast;i>=0;i-=1){const fnType=fnTypes[i];if(!unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth+1,)){continue}let mgensScratch;if(fnType.id<0){mgensScratch=new Map(mgens);if(mgensScratch.has(fnType.id)&&mgensScratch.get(fnType.id)!==0){continue}mgensScratch.set(fnType.id,0)}else{mgensScratch=mgens}const generics=fnType.id<0?whereClause[(-fnType.id)-1]:fnType.generics;const bindings=fnType.bindings?Array.from(fnType.bindings.values()).flat():[];const passesUnification=unifyFunctionTypes(fnTypes.toSpliced(i,1,...generics,...bindings),queryElems,whereClause,mgensScratch,solutionCb,unboxingDepth+1,);if(passesUnification){return true}}return false}function unifyFunctionTypeIsMatchCandidate(fnType,queryElem,mgensIn){if(!typePassesFilter(queryElem.typeFilter,fnType.ty)){return false}if(fnType.id<0&&queryElem.id<0){if(mgensIn){if(mgensIn.has(fnType.id)&&mgensIn.get(fnType.id)!==queryElem.id){return false}for(const[fid,qid]of mgensIn.entries()){if(fnType.id!==fid&&queryElem.id===qid){return false}if(fnType.id===fid&&queryElem.id!==qid){return false}}}return true}else{if(queryElem.id===typeNameIdOfArrayOrSlice&&(fnType.id===typeNameIdOfSlice||fnType.id===typeNameIdOfArray)){}else if(queryElem.id===typeNameIdOfTupleOrUnit&&(fnType.id===typeNameIdOfTuple||fnType.id===typeNameIdOfUnit)){}else if(queryElem.id===typeNameIdOfHof&&(fnType.id===typeNameIdOfFn||fnType.id===typeNameIdOfFnMut||fnType.id===typeNameIdOfFnOnce)){}else if(fnType.id!==queryElem.id||queryElem.id===null){return false}if((fnType.generics.length+fnType.bindings.size)===0&&queryElem.generics.length!==0){return false}if(fnType.bindings.size0){const fnTypePath=fnType.path!==undefined&&fnType.path!==null?fnType.path.split("::"):[];if(queryElemPathLength>fnTypePath.length){return false}let i=0;for(const path of fnTypePath){if(path===queryElem.pathWithoutLast[i]){i+=1;if(i>=queryElemPathLength){break}}}if(i0){let mgensSolutionSet=[mgensIn];for(const[name,constraints]of queryElem.bindings.entries()){if(mgensSolutionSet.length===0){return false}if(!fnType.bindings.has(name)){return false}const fnTypeBindings=fnType.bindings.get(name);mgensSolutionSet=mgensSolutionSet.flatMap(mgens=>{const newSolutions=[];unifyFunctionTypes(fnTypeBindings,constraints,whereClause,mgens,newMgens=>{newSolutions.push(newMgens);return false},unboxingDepth,);return newSolutions})}if(mgensSolutionSet.length===0){return false}const binds=Array.from(fnType.bindings.entries()).flatMap(entry=>{const[name,constraints]=entry;if(queryElem.bindings.has(name)){return[]}else{return constraints}});if(simplifiedGenerics.length>0){simplifiedGenerics=[...simplifiedGenerics,...binds]}else{simplifiedGenerics=binds}return{simplifiedGenerics,mgens:mgensSolutionSet}}return{simplifiedGenerics,mgens:[mgensIn]}}function unifyFunctionTypeIsUnboxCandidate(fnType,queryElem,whereClause,mgens,unboxingDepth,){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(fnType.id<0&&queryElem.id>=0){if(!whereClause){return false}if(mgens&&mgens.has(fnType.id)&&mgens.get(fnType.id)!==0){return false}const mgensTmp=new Map(mgens);mgensTmp.set(fnType.id,null);return checkIfInList(whereClause[(-fnType.id)-1],queryElem,whereClause,mgensTmp,unboxingDepth,)}else if(fnType.generics.length>0||fnType.bindings.size>0){const simplifiedGenerics=[...fnType.generics,...Array.from(fnType.bindings.values()).flat(),];return checkIfInList(simplifiedGenerics,queryElem,whereClause,mgens,unboxingDepth,)}return false}function checkIfInList(list,elem,whereClause,mgens,unboxingDepth){for(const entry of list){if(checkType(entry,elem,whereClause,mgens,unboxingDepth)){return true}}return false}function checkType(row,elem,whereClause,mgens,unboxingDepth){if(unboxingDepth>=UNBOXING_LIMIT){return false}if(row.bindings.size===0&&elem.bindings.size===0){if(elem.id<0&&mgens===null){return row.id<0||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth+1,)}if(row.id>0&&elem.id>0&&elem.pathWithoutLast.length===0&&typePassesFilter(elem.typeFilter,row.ty)&&elem.generics.length===0&&elem.id!==typeNameIdOfArrayOrSlice&&elem.id!==typeNameIdOfTupleOrUnit&&elem.id!==typeNameIdOfHof){return row.id===elem.id||checkIfInList(row.generics,elem,whereClause,mgens,unboxingDepth,)}}return unifyFunctionTypes([row],[elem],whereClause,mgens,null,unboxingDepth)}function checkPath(contains,ty){if(contains.length===0){return 0}const maxPathEditDistance=Math.floor(contains.reduce((acc,next)=>acc+next.length,0)/3,);let ret_dist=maxPathEditDistance+1;const path=ty.path.split("::");if(ty.parent&&ty.parent.name){path.push(ty.parent.name.toLowerCase())}const length=path.length;const clength=contains.length;pathiter:for(let i=length-clength;i>=0;i-=1){let dist_total=0;for(let x=0;xmaxPathEditDistance){continue pathiter}dist_total+=dist}}ret_dist=Math.min(ret_dist,Math.round(dist_total/clength))}return ret_dist>maxPathEditDistance?null:ret_dist}function typePassesFilter(filter,type){if(filter<=NO_TYPE_FILTER||filter===type)return true;const name=itemTypes[type];switch(itemTypes[filter]){case"constant":return name==="associatedconstant";case"fn":return name==="method"||name==="tymethod";case"type":return name==="primitive"||name==="associatedtype";case"trait":return name==="traitalias"}return false}function createAliasFromItem(item){return{crate:item.crate,name:item.name,path:item.path,descShard:item.descShard,descIndex:item.descIndex,exactPath:item.exactPath,ty:item.ty,parent:item.parent,type:item.type,is_alias:true,bitIndex:item.bitIndex,implDisambiguator:item.implDisambiguator,}}function handleAliases(ret,query,filterCrates,currentCrate){const lowerQuery=query.toLowerCase();const aliases=[];const crateAliases=[];if(filterCrates!==null){if(ALIASES.has(filterCrates)&&ALIASES.get(filterCrates).has(lowerQuery)){const query_aliases=ALIASES.get(filterCrates).get(lowerQuery);for(const alias of query_aliases){aliases.push(createAliasFromItem(searchIndex[alias]))}}}else{for(const[crate,crateAliasesIndex]of ALIASES){if(crateAliasesIndex.has(lowerQuery)){const pushTo=crate===currentCrate?crateAliases:aliases;const query_aliases=crateAliasesIndex.get(lowerQuery);for(const alias of query_aliases){pushTo.push(createAliasFromItem(searchIndex[alias]))}}}}const sortFunc=(aaa,bbb)=>{if(aaa.path{alias.alias=query;const res=buildHrefAndPath(alias);alias.displayPath=pathSplitter(res[0]);alias.fullPath=alias.displayPath+alias.name;alias.href=res[1];ret.others.unshift(alias);if(ret.others.length>MAX_RESULTS){ret.others.pop()}};aliases.forEach(pushFunc);crateAliases.forEach(pushFunc)}function addIntoResults(results,fullId,id,index,dist,path_dist,maxEditDistance){if(dist<=maxEditDistance||index!==-1){if(results.has(fullId)){const result=results.get(fullId);if(result.dontValidate||result.dist<=dist){return}}results.set(fullId,{id:id,index:index,dontValidate:parsedQuery.literalSearch,dist:dist,path_dist:path_dist,})}}function handleSingleArg(row,pos,elem,results_others,results_in_args,results_returned,maxEditDistance,){if(!row||(filterCrates!==null&&row.crate!==filterCrates)){return}let path_dist=0;const fullId=row.id;const tfpDist=compareTypeFingerprints(fullId,parsedQuery.typeFingerprint,);if(tfpDist!==null){const in_args=row.type&&row.type.inputs&&checkIfInList(row.type.inputs,elem,row.type.where_clause,null,0);const returned=row.type&&row.type.output&&checkIfInList(row.type.output,elem,row.type.where_clause,null,0);if(in_args){results_in_args.max_dist=Math.max(results_in_args.max_dist||0,tfpDist);const maxDist=results_in_args.sizenormalizedIndex&&normalizedIndex!==-1)){index=normalizedIndex}if(elem.fullPath.length>1){path_dist=checkPath(elem.pathWithoutLast,row);if(path_dist===null){return}}if(parsedQuery.literalSearch){if(row.word===elem.pathLast){addIntoResults(results_others,fullId,pos,index,0,path_dist)}return}const dist=editDistance(row.normalizedName,elem.normalizedPathLast,maxEditDistance);if(index===-1&&dist>maxEditDistance){return}addIntoResults(results_others,fullId,pos,index,dist,path_dist,maxEditDistance)}function handleArgs(row,pos,results){if(!row||(filterCrates!==null&&row.crate!==filterCrates)||!row.type){return}const tfpDist=compareTypeFingerprints(row.id,parsedQuery.typeFingerprint,);if(tfpDist===null){return}if(results.size>=MAX_RESULTS&&tfpDist>results.max_dist){return}if(!unifyFunctionTypes(row.type.inputs,parsedQuery.elems,row.type.where_clause,null,mgens=>{return unifyFunctionTypes(row.type.output,parsedQuery.returned,row.type.where_clause,mgens,null,0,)},0,)){return}results.max_dist=Math.max(results.max_dist||0,tfpDist);addIntoResults(results,row.id,pos,0,tfpDist,0,Number.MAX_VALUE)}function innerRunQuery(){const queryLen=parsedQuery.elems.reduce((acc,next)=>acc+next.pathLast.length,0)+parsedQuery.returned.reduce((acc,next)=>acc+next.pathLast.length,0);const maxEditDistance=Math.floor(queryLen/3);const genericSymbols=new Map();function convertNameToId(elem,isAssocType){if(typeNameIdMap.has(elem.normalizedPathLast)&&(isAssocType||!typeNameIdMap.get(elem.normalizedPathLast).assocOnly)){elem.id=typeNameIdMap.get(elem.normalizedPathLast).id}else if(!parsedQuery.literalSearch){let match=null;let matchDist=maxEditDistance+1;let matchName="";for(const[name,{id,assocOnly}]of typeNameIdMap){const dist=editDistance(name,elem.normalizedPathLast,maxEditDistance);if(dist<=matchDist&&dist<=maxEditDistance&&(isAssocType||!assocOnly)){if(dist===matchDist&&matchName>name){continue}match=id;matchDist=dist;matchName=name}}if(match!==null){parsedQuery.correction=matchName}elem.id=match}if((elem.id===null&&parsedQuery.totalElems>1&&elem.typeFilter===-1&&elem.generics.length===0&&elem.bindings.size===0)||elem.typeFilter===TY_GENERIC){if(genericSymbols.has(elem.name)){elem.id=genericSymbols.get(elem.name)}else{elem.id=-(genericSymbols.size+1);genericSymbols.set(elem.name,elem.id)}if(elem.typeFilter===-1&&elem.name.length>=3){const maxPartDistance=Math.floor(elem.name.length/3);let matchDist=maxPartDistance+1;let matchName="";for(const name of typeNameIdMap.keys()){const dist=editDistance(name,elem.name,maxPartDistance);if(dist<=matchDist&&dist<=maxPartDistance){if(dist===matchDist&&matchName>name){continue}matchDist=dist;matchName=name}}if(matchName!==""){parsedQuery.proposeCorrectionFrom=elem.name;parsedQuery.proposeCorrectionTo=matchName}}elem.typeFilter=TY_GENERIC}if(elem.generics.length>0&&elem.typeFilter===TY_GENERIC){parsedQuery.error=["Generic type parameter ",elem.name," does not accept generic parameters",]}for(const elem2 of elem.generics){convertNameToId(elem2)}elem.bindings=new Map(Array.from(elem.bindings.entries()).map(entry=>{const[name,constraints]=entry;if(!typeNameIdMap.has(name)){parsedQuery.error=["Type parameter ",name," does not exist",];return[null,[]]}for(const elem2 of constraints){convertNameToId(elem2)}return[typeNameIdMap.get(name).id,constraints]}),)}const fps=new Set();for(const elem of parsedQuery.elems){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}for(const elem of parsedQuery.returned){convertNameToId(elem);buildFunctionTypeFingerprint(elem,parsedQuery.typeFingerprint,fps)}if(parsedQuery.foundElems===1&&parsedQuery.returned.length===0){if(parsedQuery.elems.length===1){const elem=parsedQuery.elems[0];for(let i=0,nSearchIndex=searchIndex.length;i0){const sortQ=(a,b)=>{const ag=a.generics.length===0&&a.bindings.size===0;const bg=b.generics.length===0&&b.bindings.size===0;if(ag!==bg){return ag-bg}const ai=a.id>0;const bi=b.id>0;return ai-bi};parsedQuery.elems.sort(sortQ);parsedQuery.returned.sort(sortQ);for(let i=0,nSearchIndex=searchIndex.length;i{const descs=await Promise.all(list.map(result=>{return searchIndexEmptyDesc.get(result.crate).contains(result.bitIndex)?"":searchState.loadDesc(result)}));for(const[i,result]of list.entries()){result.desc=descs[i]}}));if(parsedQuery.error!==null&&ret.others.length!==0){ret.query.error=null}return ret}function nextTab(direction){const next=(searchState.currentTab+direction+3)%searchState.focusedByTab.length;searchState.focusedByTab[searchState.currentTab]=document.activeElement;printTab(next);focusSearchResult()}function focusSearchResult(){const target=searchState.focusedByTab[searchState.currentTab]||document.querySelectorAll(".search-results.active a").item(0)||document.querySelectorAll("#search-tabs button").item(searchState.currentTab);searchState.focusedByTab[searchState.currentTab]=null;if(target){target.focus()}}function buildHrefAndPath(item){let displayPath;let href;const type=itemTypes[item.ty];const name=item.name;let path=item.path;let exactPath=item.exactPath;if(type==="mod"){displayPath=path+"::";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+name+"/index.html"}else if(type==="import"){displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/index.html#reexport."+name}else if(type==="primitive"||type==="keyword"){displayPath="";href=ROOT_PATH+path.replace(/::/g,"/")+"/"+type+"."+name+".html"}else if(type==="externcrate"){displayPath="";href=ROOT_PATH+name+"/index.html"}else if(item.parent!==undefined){const myparent=item.parent;let anchor=type+"."+name;const parentType=itemTypes[myparent.ty];let pageType=parentType;let pageName=myparent.name;exactPath=`${myparent.exactPath}::${myparent.name}`;if(parentType==="primitive"){displayPath=myparent.name+"::"}else if(type==="structfield"&&parentType==="variant"){const enumNameIdx=item.path.lastIndexOf("::");const enumName=item.path.substr(enumNameIdx+2);path=item.path.substr(0,enumNameIdx);displayPath=path+"::"+enumName+"::"+myparent.name+"::";anchor="variant."+myparent.name+".field."+name;pageType="enum";pageName=enumName}else{displayPath=path+"::"+myparent.name+"::"}if(item.implDisambiguator!==null){anchor=item.implDisambiguator+"/"+anchor}href=ROOT_PATH+path.replace(/::/g,"/")+"/"+pageType+"."+pageName+".html#"+anchor}else{displayPath=item.path+"::";href=ROOT_PATH+item.path.replace(/::/g,"/")+"/"+type+"."+name+".html"}return[displayPath,href,`${exactPath}::${name}`]}function pathSplitter(path){const tmp=""+path.replace(/::/g,"::");if(tmp.endsWith("")){return tmp.slice(0,tmp.length-6)}return tmp}async function addTab(array,query,display){const extraClass=display?" active":"";const output=document.createElement("div");if(array.length>0){output.className="search-results "+extraClass;for(const item of array){const name=item.name;const type=itemTypes[item.ty];const longType=longItemTypes[item.ty];const typeName=longType.length!==0?`${longType}`:"?";const link=document.createElement("a");link.className="result-"+type;link.href=item.href;const resultName=document.createElement("div");resultName.className="result-name";resultName.insertAdjacentHTML("beforeend",`${typeName}`);link.appendChild(resultName);let alias=" ";if(item.is_alias){alias=`
    \ +${item.alias} - see \ +
    `}resultName.insertAdjacentHTML("beforeend",`
    ${alias}\ +${item.displayPath}${name}\ +
    `);const description=document.createElement("div");description.className="desc";description.insertAdjacentHTML("beforeend",item.desc);link.appendChild(description);output.appendChild(link)}}else if(query.error===null){output.className="search-failed"+extraClass;output.innerHTML="No results :(
    "+"Try on DuckDuckGo?

    "+"Or try looking in one of these:"}return[output,array.length]}function makeTabHeader(tabNb,text,nbElems){const fmtNbElems=nbElems<10?`\u{2007}(${nbElems})\u{2007}\u{2007}`:nbElems<100?`\u{2007}(${nbElems})\u{2007}`:`\u{2007}(${nbElems})`;if(searchState.currentTab===tabNb){return""}return""}async function showResults(results,go_to_first,filterCrates){const search=searchState.outputElement();if(go_to_first||(results.others.length===1&&getSettingValue("go-to-only-result")==="true")){window.onunload=()=>{};searchState.removeQueryParameters();const elem=document.createElement("a");elem.href=results.others[0].href;removeClass(elem,"active");document.body.appendChild(elem);elem.click();return}if(results.query===undefined){results.query=parseQuery(searchState.input.value)}currentResults=results.query.userQuery;const[ret_others,ret_in_args,ret_returned]=await Promise.all([addTab(results.others,results.query,true),addTab(results.in_args,results.query,false),addTab(results.returned,results.query,false),]);let currentTab=searchState.currentTab;if((currentTab===0&&ret_others[1]===0)||(currentTab===1&&ret_in_args[1]===0)||(currentTab===2&&ret_returned[1]===0)){if(ret_others[1]!==0){currentTab=0}else if(ret_in_args[1]!==0){currentTab=1}else if(ret_returned[1]!==0){currentTab=2}}let crates="";if(rawSearchIndex.size>1){crates=" in 
    "}let output=`

    Results${crates}

    `;if(results.query.error!==null){const error=results.query.error;error.forEach((value,index)=>{value=value.split("<").join("<").split(">").join(">");if(index%2!==0){error[index]=`${value.replaceAll(" ", " ")}`}else{error[index]=value}});output+=`

    Query parser error: "${error.join("")}".

    `;output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+"
    ";currentTab=0}else if(results.query.foundElems<=1&&results.query.returned.length===0){output+="
    "+makeTabHeader(0,"In Names",ret_others[1])+makeTabHeader(1,"In Parameters",ret_in_args[1])+makeTabHeader(2,"In Return Types",ret_returned[1])+"
    "}else{const signatureTabTitle=results.query.elems.length===0?"In Function Return Types":results.query.returned.length===0?"In Function Parameters":"In Function Signatures";output+="
    "+makeTabHeader(0,signatureTabTitle,ret_others[1])+"
    ";currentTab=0}if(results.query.correction!==null){const orig=results.query.returned.length>0?results.query.returned[0].name:results.query.elems[0].name;output+="

    "+`Type "${orig}" not found. `+"Showing results for closest type name "+`"${results.query.correction}" instead.

    `}if(results.query.proposeCorrectionFrom!==null){const orig=results.query.proposeCorrectionFrom;const targ=results.query.proposeCorrectionTo;output+="

    "+`Type "${orig}" not found and used as generic parameter. `+`Consider searching for "${targ}" instead.

    `}const resultsElem=document.createElement("div");resultsElem.id="results";resultsElem.appendChild(ret_others[0]);resultsElem.appendChild(ret_in_args[0]);resultsElem.appendChild(ret_returned[0]);search.innerHTML=output;const crateSearch=document.getElementById("crate-search");if(crateSearch){crateSearch.addEventListener("input",updateCrate)}search.appendChild(resultsElem);searchState.showResults(search);const elems=document.getElementById("search-tabs").childNodes;searchState.focusedByTab=[];let i=0;for(const elem of elems){const j=i;elem.onclick=()=>printTab(j);searchState.focusedByTab.push(null);i+=1}printTab(currentTab)}function updateSearchHistory(url){if(!browserSupportsHistoryApi()){return}const params=searchState.getQueryStringParams();if(!history.state&&!params.search){history.pushState(null,"",url)}else{history.replaceState(null,"",url)}}async function search(forced){const query=parseQuery(searchState.input.value.trim());let filterCrates=getFilterCrates();if(!forced&&query.userQuery===currentResults){if(query.userQuery.length>0){putBackSearch()}return}searchState.setLoadingSearch();const params=searchState.getQueryStringParams();if(filterCrates===null&¶ms["filter-crate"]!==undefined){filterCrates=params["filter-crate"]}searchState.title="Results for "+query.original+" - Rust";updateSearchHistory(buildUrl(query.original,filterCrates));await showResults(await execQuery(query,filterCrates,window.currentCrate),params.go_to_first,filterCrates)}function buildItemSearchTypeAll(types,lowercasePaths){return types.length>0?types.map(type=>buildItemSearchType(type,lowercasePaths)):EMPTY_GENERICS_ARRAY}const EMPTY_BINDINGS_MAP=new Map();const EMPTY_GENERICS_ARRAY=[];let TYPES_POOL=new Map();function buildItemSearchType(type,lowercasePaths,isAssocType){const PATH_INDEX_DATA=0;const GENERICS_DATA=1;const BINDINGS_DATA=2;let pathIndex,generics,bindings;if(typeof type==="number"){pathIndex=type;generics=EMPTY_GENERICS_ARRAY;bindings=EMPTY_BINDINGS_MAP}else{pathIndex=type[PATH_INDEX_DATA];generics=buildItemSearchTypeAll(type[GENERICS_DATA],lowercasePaths,);if(type.length>BINDINGS_DATA&&type[BINDINGS_DATA].length>0){bindings=new Map(type[BINDINGS_DATA].map(binding=>{const[assocType,constraints]=binding;return[buildItemSearchType(assocType,lowercasePaths,true).id,buildItemSearchTypeAll(constraints,lowercasePaths),]}))}else{bindings=EMPTY_BINDINGS_MAP}}let result;if(pathIndex<0){result={id:pathIndex,ty:TY_GENERIC,path:null,exactPath:null,generics,bindings,}}else if(pathIndex===0){result={id:null,ty:null,path:null,exactPath:null,generics,bindings,}}else{const item=lowercasePaths[pathIndex-1];result={id:buildTypeMapIndex(item.name,isAssocType),ty:item.ty,path:item.path,exactPath:item.exactPath,generics,bindings,}}const cr=TYPES_POOL.get(result.id);if(cr){if(cr.generics.length===result.generics.length&&cr.generics!==result.generics&&cr.generics.every((x,i)=>result.generics[i]===x)){result.generics=cr.generics}if(cr.bindings.size===result.bindings.size&&cr.bindings!==result.bindings){let ok=true;for(const[k,v]of cr.bindings.entries()){const v2=result.bindings.get(v);if(!v2){ok=false;break}if(v!==v2&&v.length===v2.length&&v.every((x,i)=>v2[i]===x)){result.bindings.set(k,v)}else if(v!==v2){ok=false;break}}if(ok){result.bindings=cr.bindings}}if(cr.ty===result.ty&&cr.path===result.path&&cr.bindings===result.bindings&&cr.generics===result.generics&&cr.ty===result.ty){return cr}}TYPES_POOL.set(result.id,result);return result}function buildFunctionSearchTypeCallback(lowercasePaths){return functionSearchType=>{if(functionSearchType===0){return null}const INPUTS_DATA=0;const OUTPUT_DATA=1;let inputs,output;if(typeof functionSearchType[INPUTS_DATA]==="number"){inputs=[buildItemSearchType(functionSearchType[INPUTS_DATA],lowercasePaths)]}else{inputs=buildItemSearchTypeAll(functionSearchType[INPUTS_DATA],lowercasePaths,)}if(functionSearchType.length>1){if(typeof functionSearchType[OUTPUT_DATA]==="number"){output=[buildItemSearchType(functionSearchType[OUTPUT_DATA],lowercasePaths)]}else{output=buildItemSearchTypeAll(functionSearchType[OUTPUT_DATA],lowercasePaths,)}}else{output=[]}const where_clause=[];const l=functionSearchType.length;for(let i=2;i{k=(~~k+0x7ed55d16)+(k<<12);k=(k ^ 0xc761c23c)^(k>>>19);k=(~~k+0x165667b1)+(k<<5);k=(~~k+0xd3a2646c)^(k<<9);k=(~~k+0xfd7046c5)+(k<<3);return(k ^ 0xb55a4f09)^(k>>>16)};const hashint2=k=>{k=~k+(k<<15);k ^=k>>>12;k+=k<<2;k ^=k>>>4;k=Math.imul(k,2057);return k ^(k>>16)};if(input!==null){const h0a=hashint1(input);const h0b=hashint2(input);const h1a=~~(h0a+Math.imul(h0b,2));const h1b=~~(h0a+Math.imul(h0b,3));const h2a=~~(h0a+Math.imul(h0b,4));const h2b=~~(h0a+Math.imul(h0b,5));output[0]|=(1<<(h0a%32))|(1<<(h1b%32));output[1]|=(1<<(h1a%32))|(1<<(h2b%32));output[2]|=(1<<(h2a%32))|(1<<(h0b%32));fps.add(input)}for(const g of type.generics){buildFunctionTypeFingerprint(g,output,fps)}const fb={id:null,ty:0,generics:EMPTY_GENERICS_ARRAY,bindings:EMPTY_BINDINGS_MAP,};for(const[k,v]of type.bindings.entries()){fb.id=k;fb.generics=v;buildFunctionTypeFingerprint(fb,output,fps)}output[3]=fps.size}function compareTypeFingerprints(fullId,queryFingerprint){const fh0=functionTypeFingerprint[fullId*4];const fh1=functionTypeFingerprint[(fullId*4)+1];const fh2=functionTypeFingerprint[(fullId*4)+2];const[qh0,qh1,qh2]=queryFingerprint;const[in0,in1,in2]=[fh0&qh0,fh1&qh1,fh2&qh2];if((in0 ^ qh0)||(in1 ^ qh1)||(in2 ^ qh2)){return null}return functionTypeFingerprint[(fullId*4)+3]}class VlqHexDecoder{constructor(string,cons){this.string=string;this.cons=cons;this.offset=0;this.backrefQueue=[]}decodeList(){const cb="}".charCodeAt(0);let c=this.string.charCodeAt(this.offset);const ret=[];while(c!==cb){ret.push(this.decode());c=this.string.charCodeAt(this.offset)}this.offset+=1;return ret}decode(){const[ob,la]=["{","`"].map(c=>c.charCodeAt(0));let n=0;let c=this.string.charCodeAt(this.offset);if(c===ob){this.offset+=1;return this.decodeList()}while(c>1];this.offset+=1;return sign?-value:value}next(){const c=this.string.charCodeAt(this.offset);const[zero,ua,la]=["0","@","`"].map(c=>c.charCodeAt(0));if(c>=zero&&c16){this.backrefQueue.pop()}return result}}class RoaringBitmap{constructor(str){const strdecoded=atob(str);const u8array=new Uint8Array(strdecoded.length);for(let j=0;j=4){offsets=[];for(let j=0;j>3]&(1<<(j&0x7))){const runcount=(u8array[i]|(u8array[i+1]<<8));i+=2;this.containers.push(new RoaringBitmapRun(runcount,u8array.slice(i,i+(runcount*4)),));i+=runcount*4}else if(this.cardinalities[j]>=4096){this.containers.push(new RoaringBitmapBits(u8array.slice(i,i+8192)));i+=8192}else{const end=this.cardinalities[j]*2;this.containers.push(new RoaringBitmapArray(this.cardinalities[j],u8array.slice(i,i+end),));i+=end}}}contains(keyvalue){const key=keyvalue>>16;const value=keyvalue&0xFFFF;for(let i=0;i=start&&value<=(start+lenm1)){return true}}return false}}class RoaringBitmapArray{constructor(cardinality,array){this.cardinality=cardinality;this.array=array}contains(value){const l=this.cardinality*2;for(let i=0;i>3]&(1<<(value&7)))}}function buildIndex(rawSearchIndex){searchIndex=[];searchIndexDeprecated=new Map();searchIndexEmptyDesc=new Map();const charA="A".charCodeAt(0);let currentIndex=0;let id=0;for(const crate of rawSearchIndex.values()){id+=crate.t.length+1}functionTypeFingerprint=new Uint32Array((id+1)*4);id=0;for(const[crate,crateCorpus]of rawSearchIndex){const itemDescShardDecoder=new VlqHexDecoder(crateCorpus.D,noop=>noop);let descShard={crate,shard:0,start:0,len:itemDescShardDecoder.next(),promise:null,resolve:null,};const descShardList=[descShard];searchIndexDeprecated.set(crate,new RoaringBitmap(crateCorpus.c));searchIndexEmptyDesc.set(crate,new RoaringBitmap(crateCorpus.e));let descIndex=0;const crateRow={crate,ty:3,name:crate,path:"",descShard,descIndex,exactPath:"",desc:crateCorpus.doc,parent:undefined,type:null,id,word:crate,normalizedName:crate.indexOf("_")===-1?crate:crate.replace(/_/g,""),bitIndex:0,implDisambiguator:null,};id+=1;searchIndex.push(crateRow);currentIndex+=1;if(!searchIndexEmptyDesc.get(crate).contains(0)){descIndex+=1}const itemTypes=crateCorpus.t;const itemNames=crateCorpus.n;const itemPaths=new Map(crateCorpus.q);const itemReexports=new Map(crateCorpus.r);const itemParentIdxs=crateCorpus.i;const implDisambiguator=new Map(crateCorpus.b);const paths=crateCorpus.p;const aliases=crateCorpus.a;const lowercasePaths=[];const itemFunctionDecoder=new VlqHexDecoder(crateCorpus.f,buildFunctionSearchTypeCallback(lowercasePaths),);let len=paths.length;let lastPath=itemPaths.get(0);for(let i=0;i2){path=itemPaths.has(elem[2])?itemPaths.get(elem[2]):lastPath;lastPath=path}const exactPath=elem.length>3?itemPaths.get(elem[3]):path;lowercasePaths.push({ty,name:name.toLowerCase(),path,exactPath});paths[i]={ty,name,path,exactPath}}lastPath="";len=itemTypes.length;for(let i=0;i=descShard.len&&!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descShard={crate,shard:descShard.shard+1,start:descShard.start+descShard.len,len:itemDescShardDecoder.next(),promise:null,resolve:null,};descIndex=0;descShardList.push(descShard)}let word="";if(typeof itemNames[i]==="string"){word=itemNames[i].toLowerCase()}const path=itemPaths.has(i)?itemPaths.get(i):lastPath;const type=itemFunctionDecoder.next();if(type!==null){if(type){const fp=functionTypeFingerprint.subarray(id*4,(id+1)*4);const fps=new Set();for(const t of type.inputs){buildFunctionTypeFingerprint(t,fp,fps)}for(const t of type.output){buildFunctionTypeFingerprint(t,fp,fps)}for(const w of type.where_clause){for(const t of w){buildFunctionTypeFingerprint(t,fp,fps)}}}}const row={crate,ty:itemTypes.charCodeAt(i)-charA,name:itemNames[i],path,descShard,descIndex,exactPath:itemReexports.has(i)?itemPaths.get(itemReexports.get(i)):path,parent:itemParentIdxs[i]>0?paths[itemParentIdxs[i]-1]:undefined,type,id,word,normalizedName:word.indexOf("_")===-1?word:word.replace(/_/g,""),bitIndex,implDisambiguator:implDisambiguator.has(i)?implDisambiguator.get(i):null,};id+=1;searchIndex.push(row);lastPath=row.path;if(!searchIndexEmptyDesc.get(crate).contains(bitIndex)){descIndex+=1}}if(aliases){const currentCrateAliases=new Map();ALIASES.set(crate,currentCrateAliases);for(const alias_name in aliases){if(!Object.prototype.hasOwnProperty.call(aliases,alias_name)){continue}let currentNameAliases;if(currentCrateAliases.has(alias_name)){currentNameAliases=currentCrateAliases.get(alias_name)}else{currentNameAliases=[];currentCrateAliases.set(alias_name,currentNameAliases)}for(const local_alias of aliases[alias_name]){currentNameAliases.push(local_alias+currentIndex)}}}currentIndex+=itemTypes.length;searchState.descShards.set(crate,descShardList)}TYPES_POOL=new Map()}function onSearchSubmit(e){e.preventDefault();searchState.clearInputTimeout();search()}function putBackSearch(){const search_input=searchState.input;if(!searchState.input){return}if(search_input.value!==""&&!searchState.isDisplayed()){searchState.showResults();if(browserSupportsHistoryApi()){history.replaceState(null,"",buildUrl(search_input.value,getFilterCrates()))}document.title=searchState.title}}function registerSearchEvents(){const params=searchState.getQueryStringParams();if(searchState.input.value===""){searchState.input.value=params.search||""}const searchAfter500ms=()=>{searchState.clearInputTimeout();if(searchState.input.value.length===0){searchState.hideResults()}else{searchState.timeout=setTimeout(search,500)}};searchState.input.onkeyup=searchAfter500ms;searchState.input.oninput=searchAfter500ms;document.getElementsByClassName("search-form")[0].onsubmit=onSearchSubmit;searchState.input.onchange=e=>{if(e.target!==document.activeElement){return}searchState.clearInputTimeout();setTimeout(search,0)};searchState.input.onpaste=searchState.input.onchange;searchState.outputElement().addEventListener("keydown",e=>{if(e.altKey||e.ctrlKey||e.shiftKey||e.metaKey){return}if(e.which===38){const previous=document.activeElement.previousElementSibling;if(previous){previous.focus()}else{searchState.focus()}e.preventDefault()}else if(e.which===40){const next=document.activeElement.nextElementSibling;if(next){next.focus()}const rect=document.activeElement.getBoundingClientRect();if(window.innerHeight-rect.bottom{if(e.which===40){focusSearchResult();e.preventDefault()}});searchState.input.addEventListener("focus",()=>{putBackSearch()});searchState.input.addEventListener("blur",()=>{searchState.input.placeholder=searchState.input.origPlaceholder});if(browserSupportsHistoryApi()){const previousTitle=document.title;window.addEventListener("popstate",e=>{const params=searchState.getQueryStringParams();document.title=previousTitle;currentResults=null;if(params.search&¶ms.search.length>0){searchState.input.value=params.search;e.preventDefault();search()}else{searchState.input.value="";searchState.hideResults()}})}window.onpageshow=()=>{const qSearch=searchState.getQueryStringParams().search;if(searchState.input.value===""&&qSearch){searchState.input.value=qSearch}search()}}function updateCrate(ev){if(ev.target.value==="all crates"){const query=searchState.input.value.trim();updateSearchHistory(buildUrl(query,null))}currentResults=null;search(true)}buildIndex(rawSearchIndex);if(typeof window!=="undefined"){registerSearchEvents();if(window.searchState.getQueryStringParams().search){search()}}if(typeof exports!=="undefined"){exports.initSearch=initSearch;exports.execQuery=execQuery;exports.parseQuery=parseQuery}}if(typeof window!=="undefined"){window.initSearch=initSearch;if(window.searchIndex!==undefined){initSearch(window.searchIndex)}}else{initSearch(new Map())}})() \ No newline at end of file diff --git a/docs/macos_docs/static.files/storage-e32f0c247825364d.js b/docs/macos_docs/static.files/storage-e32f0c247825364d.js new file mode 100644 index 00000000..61ddce23 --- /dev/null +++ b/docs/macos_docs/static.files/storage-e32f0c247825364d.js @@ -0,0 +1 @@ +"use strict";const builtinThemes=["light","dark","ayu"];const darkThemes=["dark","ayu"];window.currentTheme=document.getElementById("themeStyle");const settingsDataset=(function(){const settingsElement=document.getElementById("default-settings");return settingsElement&&settingsElement.dataset?settingsElement.dataset:null})();function getSettingValue(settingName){const current=getCurrentValue(settingName);if(current===null&&settingsDataset!==null){const def=settingsDataset[settingName.replace(/-/g,"_")];if(def!==undefined){return def}}return current}const localStoredTheme=getSettingValue("theme");function hasClass(elem,className){return elem&&elem.classList&&elem.classList.contains(className)}function addClass(elem,className){if(elem&&elem.classList){elem.classList.add(className)}}function removeClass(elem,className){if(elem&&elem.classList){elem.classList.remove(className)}}function onEach(arr,func){for(const elem of arr){if(func(elem)){return true}}return false}function onEachLazy(lazyArray,func){return onEach(Array.prototype.slice.call(lazyArray),func)}function updateLocalStorage(name,value){try{window.localStorage.setItem("rustdoc-"+name,value)}catch(e){}}function getCurrentValue(name){try{return window.localStorage.getItem("rustdoc-"+name)}catch(e){return null}}const getVar=(function getVar(name){const el=document.querySelector("head > meta[name='rustdoc-vars']");return el?el.attributes["data-"+name].value:null});function switchTheme(newThemeName,saveTheme){const themeNames=getVar("themes").split(",").filter(t=>t);themeNames.push(...builtinThemes);if(themeNames.indexOf(newThemeName)===-1){return}if(saveTheme){updateLocalStorage("theme",newThemeName)}document.documentElement.setAttribute("data-theme",newThemeName);if(builtinThemes.indexOf(newThemeName)!==-1){if(window.currentTheme){window.currentTheme.parentNode.removeChild(window.currentTheme);window.currentTheme=null}}else{const newHref=getVar("root-path")+encodeURIComponent(newThemeName)+getVar("resource-suffix")+".css";if(!window.currentTheme){if(document.readyState==="loading"){document.write(``);window.currentTheme=document.getElementById("themeStyle")}else{window.currentTheme=document.createElement("link");window.currentTheme.rel="stylesheet";window.currentTheme.id="themeStyle";window.currentTheme.href=newHref;document.documentElement.appendChild(window.currentTheme)}}else if(newHref!==window.currentTheme.href){window.currentTheme.href=newHref}}}const updateTheme=(function(){const mql=window.matchMedia("(prefers-color-scheme: dark)");function updateTheme(){if(getSettingValue("use-system-theme")!=="false"){const lightTheme=getSettingValue("preferred-light-theme")||"light";const darkTheme=getSettingValue("preferred-dark-theme")||"dark";updateLocalStorage("use-system-theme","true");switchTheme(mql.matches?darkTheme:lightTheme,true)}else{switchTheme(getSettingValue("theme"),false)}}mql.addEventListener("change",updateTheme);return updateTheme})();if(getSettingValue("use-system-theme")!=="false"&&window.matchMedia){if(getSettingValue("use-system-theme")===null&&getSettingValue("preferred-dark-theme")===null&&darkThemes.indexOf(localStoredTheme)>=0){updateLocalStorage("preferred-dark-theme",localStoredTheme)}}updateTheme();if(getSettingValue("source-sidebar-show")==="true"){addClass(document.documentElement,"src-sidebar-expanded")}if(getSettingValue("hide-sidebar")==="true"){addClass(document.documentElement,"hide-sidebar")}function updateSidebarWidth(){const desktopSidebarWidth=getSettingValue("desktop-sidebar-width");if(desktopSidebarWidth&&desktopSidebarWidth!=="null"){document.documentElement.style.setProperty("--desktop-sidebar-width",desktopSidebarWidth+"px",)}const srcSidebarWidth=getSettingValue("src-sidebar-width");if(srcSidebarWidth&&srcSidebarWidth!=="null"){document.documentElement.style.setProperty("--src-sidebar-width",srcSidebarWidth+"px",)}}updateSidebarWidth();window.addEventListener("pageshow",ev=>{if(ev.persisted){setTimeout(updateTheme,0);setTimeout(updateSidebarWidth,0)}}) \ No newline at end of file diff --git a/docs/macos_docs/static.files/wheel-63255fc4502dca9a.svg b/docs/macos_docs/static.files/wheel-63255fc4502dca9a.svg new file mode 100644 index 00000000..ba30f13d --- /dev/null +++ b/docs/macos_docs/static.files/wheel-63255fc4502dca9a.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/clone/trait.Clone.js b/docs/macos_docs/trait.impl/core/clone/trait.Clone.js index 47aa6527..22cb9719 100644 --- a/docs/macos_docs/trait.impl/core/clone/trait.Clone.js +++ b/docs/macos_docs/trait.impl/core/clone/trait.Clone.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Clone for CapturableContentError"],["impl Clone for CaptureConfigError"],["impl Clone for CapturePixelFormat"],["impl Clone for StreamCreateError"],["impl Clone for StreamError"],["impl Clone for VideoFrameBitmapError"],["impl Clone for MacosVideoFrameError"],["impl Clone for MetalVideoFramePlaneTexture"],["impl Clone for WgpuVideoFrameError"],["impl Clone for WgpuVideoFramePlaneTexture"],["impl Clone for AudioChannelCount"],["impl Clone for AudioSampleRate"],["impl Clone for MacosCaptureResolutionType"],["impl Clone for MacosWindowLevel"],["impl Clone for CapturableContentFilter"],["impl Clone for CapturableDisplay"],["impl Clone for CapturableWindow"],["impl Clone for CapturableWindowFilter"],["impl Clone for AudioCaptureConfig"],["impl Clone for CaptureAccessToken"],["impl Clone for CaptureConfig"],["impl Clone for IoSurface"],["impl Clone for Point"],["impl Clone for Rect"],["impl Clone for Size"]] +"crabgrab":[["impl Clone for CapturableContentError"],["impl Clone for CaptureConfigError"],["impl Clone for CapturePixelFormat"],["impl Clone for StreamCreateError"],["impl Clone for StreamError"],["impl Clone for VideoFrameBitmapError"],["impl Clone for MacosVideoFrameError"],["impl Clone for MetalVideoFramePlaneTexture"],["impl Clone for WgpuVideoFrameError"],["impl Clone for WgpuVideoFramePlaneTexture"],["impl Clone for AudioChannelCount"],["impl Clone for AudioSampleRate"],["impl Clone for MacosCaptureResolutionType"],["impl Clone for MacosWindowLevel"],["impl Clone for CapturableContentFilter"],["impl Clone for CapturableDisplay"],["impl Clone for CapturableWindow"],["impl Clone for CapturableWindowFilter"],["impl Clone for AudioCaptureConfig"],["impl Clone for CaptureAccessToken"],["impl Clone for CaptureConfig"],["impl Clone for IoSurface"],["impl Clone for Point"],["impl Clone for Rect"],["impl Clone for Size"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/cmp/trait.Eq.js b/docs/macos_docs/trait.impl/core/cmp/trait.Eq.js index 41c31114..30606082 100644 --- a/docs/macos_docs/trait.impl/core/cmp/trait.Eq.js +++ b/docs/macos_docs/trait.impl/core/cmp/trait.Eq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Eq for CapturePixelFormat"],["impl Eq for MetalVideoFramePlaneTexture"],["impl Eq for WgpuVideoFramePlaneTexture"],["impl Eq for MacosCaptureResolutionType"],["impl Eq for MacosWindowLevel"],["impl Eq for CapturableWindow"]] +"crabgrab":[["impl Eq for CapturePixelFormat"],["impl Eq for MetalVideoFramePlaneTexture"],["impl Eq for WgpuVideoFramePlaneTexture"],["impl Eq for MacosCaptureResolutionType"],["impl Eq for MacosWindowLevel"],["impl Eq for CapturableWindow"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/cmp/trait.Ord.js b/docs/macos_docs/trait.impl/core/cmp/trait.Ord.js index f2dfab1a..60fff3fd 100644 --- a/docs/macos_docs/trait.impl/core/cmp/trait.Ord.js +++ b/docs/macos_docs/trait.impl/core/cmp/trait.Ord.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Ord for MacosWindowLevel"]] +"crabgrab":[["impl Ord for MacosWindowLevel"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/cmp/trait.PartialEq.js b/docs/macos_docs/trait.impl/core/cmp/trait.PartialEq.js index f329cb07..0e0c1367 100644 --- a/docs/macos_docs/trait.impl/core/cmp/trait.PartialEq.js +++ b/docs/macos_docs/trait.impl/core/cmp/trait.PartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl PartialEq for CapturePixelFormat"],["impl PartialEq for MetalVideoFramePlaneTexture"],["impl PartialEq for WgpuVideoFramePlaneTexture"],["impl PartialEq for MacosCaptureResolutionType"],["impl PartialEq for MacosWindowLevel"],["impl PartialEq for CapturableWindow"]] +"crabgrab":[["impl PartialEq for CapturePixelFormat"],["impl PartialEq for MetalVideoFramePlaneTexture"],["impl PartialEq for WgpuVideoFramePlaneTexture"],["impl PartialEq for MacosCaptureResolutionType"],["impl PartialEq for MacosWindowLevel"],["impl PartialEq for CapturableWindow"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/cmp/trait.PartialOrd.js b/docs/macos_docs/trait.impl/core/cmp/trait.PartialOrd.js index 730c0c2c..b49b44e3 100644 --- a/docs/macos_docs/trait.impl/core/cmp/trait.PartialOrd.js +++ b/docs/macos_docs/trait.impl/core/cmp/trait.PartialOrd.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl PartialOrd for MacosWindowLevel"]] +"crabgrab":[["impl PartialOrd for MacosWindowLevel"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/convert/trait.AsMut.js b/docs/macos_docs/trait.impl/core/convert/trait.AsMut.js new file mode 100644 index 00000000..58e008ee --- /dev/null +++ b/docs/macos_docs/trait.impl/core/convert/trait.AsMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[["impl<T: Sized + Zeroable + Copy> AsMut<[T]> for PooledBitmap<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/convert/trait.AsRef.js b/docs/macos_docs/trait.impl/core/convert/trait.AsRef.js new file mode 100644 index 00000000..3fa70be4 --- /dev/null +++ b/docs/macos_docs/trait.impl/core/convert/trait.AsRef.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[["impl<T: Sized + Zeroable + Copy> AsRef<[T]> for PooledBitmap<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/default/trait.Default.js b/docs/macos_docs/trait.impl/core/default/trait.Default.js index 9caf689a..09bc0c0e 100644 --- a/docs/macos_docs/trait.impl/core/default/trait.Default.js +++ b/docs/macos_docs/trait.impl/core/default/trait.Default.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Default for CapturableWindowFilter"]] +"crabgrab":[["impl Default for CapturableWindowFilter"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/error/trait.Error.js b/docs/macos_docs/trait.impl/core/error/trait.Error.js index 7eabbb8d..a78cc030 100644 --- a/docs/macos_docs/trait.impl/core/error/trait.Error.js +++ b/docs/macos_docs/trait.impl/core/error/trait.Error.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Error for CapturableContentError"],["impl Error for CaptureConfigError"],["impl Error for StreamCreateError"],["impl Error for StreamError"],["impl Error for StreamStopError"],["impl Error for VideoFrameBitmapError"],["impl Error for GetIoSurfaceError"],["impl Error for MacosVideoFrameError"],["impl Error for ScreenshotError"],["impl Error for WgpuVideoFrameError"]] +"crabgrab":[["impl Error for CapturableContentError"],["impl Error for CaptureConfigError"],["impl Error for StreamCreateError"],["impl Error for StreamError"],["impl Error for StreamStopError"],["impl Error for VideoFrameBitmapError"],["impl Error for GetIoSurfaceError"],["impl Error for MacosVideoFrameError"],["impl Error for ScreenshotError"],["impl Error for WgpuVideoFrameError"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/fmt/trait.Debug.js b/docs/macos_docs/trait.impl/core/fmt/trait.Debug.js index ca8a08d4..bd47471a 100644 --- a/docs/macos_docs/trait.impl/core/fmt/trait.Debug.js +++ b/docs/macos_docs/trait.impl/core/fmt/trait.Debug.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Debug for CapturableContentError"],["impl Debug for CaptureConfigError"],["impl Debug for CapturePixelFormat"],["impl Debug for StreamCreateError"],["impl Debug for StreamError"],["impl Debug for StreamEvent"],["impl Debug for StreamStopError"],["impl Debug for VideoFrameBitmapError"],["impl Debug for GetIoSurfaceError"],["impl Debug for MacosVideoFrameError"],["impl Debug for MetalVideoFramePlaneTexture"],["impl Debug for ScreenshotError"],["impl Debug for WgpuVideoFrameError"],["impl Debug for WgpuVideoFramePlaneTexture"],["impl Debug for AudioChannelCount"],["impl Debug for AudioSampleRate"],["impl Debug for MacosCaptureResolutionType"],["impl Debug for MacosWindowLevel"],["impl Debug for CapturableDisplay"],["impl Debug for CapturableWindow"],["impl Debug for AudioCaptureConfig"],["impl Debug for CaptureAccessToken"],["impl Debug for CaptureConfig"],["impl Debug for AudioFrame"],["impl Debug for VideoFrame"],["impl Debug for Point"],["impl Debug for Rect"],["impl Debug for Size"]] +"crabgrab":[["impl Debug for CapturableContentError"],["impl Debug for CaptureConfigError"],["impl Debug for CapturePixelFormat"],["impl Debug for StreamCreateError"],["impl Debug for StreamError"],["impl Debug for StreamEvent"],["impl Debug for StreamStopError"],["impl Debug for VideoFrameBitmapError"],["impl Debug for GetIoSurfaceError"],["impl Debug for MacosVideoFrameError"],["impl Debug for MetalVideoFramePlaneTexture"],["impl Debug for ScreenshotError"],["impl Debug for WgpuVideoFrameError"],["impl Debug for WgpuVideoFramePlaneTexture"],["impl Debug for AudioChannelCount"],["impl Debug for AudioSampleRate"],["impl Debug for MacosCaptureResolutionType"],["impl Debug for MacosWindowLevel"],["impl Debug for CapturableDisplay"],["impl Debug for CapturableWindow"],["impl Debug for AudioCaptureConfig"],["impl Debug for CaptureAccessToken"],["impl Debug for CaptureConfig"],["impl Debug for AudioFrame"],["impl Debug for VideoFrame"],["impl Debug for Point"],["impl Debug for Rect"],["impl Debug for Size"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/fmt/trait.Display.js b/docs/macos_docs/trait.impl/core/fmt/trait.Display.js index cd07402a..1b6805dd 100644 --- a/docs/macos_docs/trait.impl/core/fmt/trait.Display.js +++ b/docs/macos_docs/trait.impl/core/fmt/trait.Display.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Display for CapturableContentError"],["impl Display for CaptureConfigError"],["impl Display for StreamCreateError"],["impl Display for StreamError"],["impl Display for StreamStopError"],["impl Display for VideoFrameBitmapError"],["impl Display for GetIoSurfaceError"],["impl Display for MacosVideoFrameError"],["impl Display for ScreenshotError"],["impl Display for WgpuVideoFrameError"]] +"crabgrab":[["impl Display for CapturableContentError"],["impl Display for CaptureConfigError"],["impl Display for StreamCreateError"],["impl Display for StreamError"],["impl Display for StreamStopError"],["impl Display for VideoFrameBitmapError"],["impl Display for GetIoSurfaceError"],["impl Display for MacosVideoFrameError"],["impl Display for ScreenshotError"],["impl Display for WgpuVideoFrameError"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/hash/trait.Hash.js b/docs/macos_docs/trait.impl/core/hash/trait.Hash.js index 0793ed13..68f4166f 100644 --- a/docs/macos_docs/trait.impl/core/hash/trait.Hash.js +++ b/docs/macos_docs/trait.impl/core/hash/trait.Hash.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Hash for CapturableWindow"]] +"crabgrab":[["impl Hash for CapturableWindow"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js b/docs/macos_docs/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js index 6af5effd..b8fc50dc 100644 --- a/docs/macos_docs/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js +++ b/docs/macos_docs/trait.impl/core/iter/traits/exact_size/trait.ExactSizeIterator.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl ExactSizeIterator for CapturableDisplayIterator<'_>"],["impl ExactSizeIterator for CapturableWindowIterator<'_>"]] +"crabgrab":[["impl ExactSizeIterator for CapturableDisplayIterator<'_>"],["impl ExactSizeIterator for CapturableWindowIterator<'_>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/iter/traits/iterator/trait.Iterator.js b/docs/macos_docs/trait.impl/core/iter/traits/iterator/trait.Iterator.js index 9dc697b7..c52a8485 100644 --- a/docs/macos_docs/trait.impl/core/iter/traits/iterator/trait.Iterator.js +++ b/docs/macos_docs/trait.impl/core/iter/traits/iterator/trait.Iterator.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Iterator for CapturableDisplayIterator<'_>"],["impl Iterator for CapturableWindowIterator<'_>"]] +"crabgrab":[["impl Iterator for CapturableDisplayIterator<'_>"],["impl Iterator for CapturableWindowIterator<'_>"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/marker/trait.Copy.js b/docs/macos_docs/trait.impl/core/marker/trait.Copy.js index 5ee67775..a06c5e32 100644 --- a/docs/macos_docs/trait.impl/core/marker/trait.Copy.js +++ b/docs/macos_docs/trait.impl/core/marker/trait.Copy.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Copy for CapturePixelFormat"],["impl Copy for MetalVideoFramePlaneTexture"],["impl Copy for WgpuVideoFramePlaneTexture"],["impl Copy for AudioChannelCount"],["impl Copy for AudioSampleRate"],["impl Copy for MacosCaptureResolutionType"],["impl Copy for MacosWindowLevel"],["impl Copy for CaptureAccessToken"],["impl Copy for Point"],["impl Copy for Rect"],["impl Copy for Size"]] +"crabgrab":[["impl Copy for CapturePixelFormat"],["impl Copy for MetalVideoFramePlaneTexture"],["impl Copy for WgpuVideoFramePlaneTexture"],["impl Copy for AudioChannelCount"],["impl Copy for AudioSampleRate"],["impl Copy for MacosCaptureResolutionType"],["impl Copy for MacosWindowLevel"],["impl Copy for CaptureAccessToken"],["impl Copy for Point"],["impl Copy for Rect"],["impl Copy for Size"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/marker/trait.Freeze.js b/docs/macos_docs/trait.impl/core/marker/trait.Freeze.js index 4d862938..cf342aed 100644 --- a/docs/macos_docs/trait.impl/core/marker/trait.Freeze.js +++ b/docs/macos_docs/trait.impl/core/marker/trait.Freeze.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !Freeze for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !Freeze for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Freeze for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Freeze for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Freeze for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Freeze for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Freeze for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Freeze for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Freeze for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Freeze for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Freeze for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Freeze for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Freeze for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Freeze for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Freeze for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Freeze for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Freeze for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Freeze for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Freeze for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Freeze for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Freeze for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Freeze for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Freeze for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Freeze for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Freeze for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Freeze for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Freeze for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Freeze for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Freeze for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Freeze for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Freeze for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Freeze for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Freeze for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Freeze for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Freeze for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Freeze for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Freeze for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Freeze for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Freeze for Point",1,["crabgrab::util::Point"]],["impl Freeze for Rect",1,["crabgrab::util::Rect"]],["impl Freeze for Size",1,["crabgrab::util::Size"]],["impl<'content> Freeze for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Freeze for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Freeze for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Freeze for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !Freeze for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !Freeze for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Freeze for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Freeze for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Freeze for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Freeze for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Freeze for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Freeze for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Freeze for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Freeze for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Freeze for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Freeze for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Freeze for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Freeze for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Freeze for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Freeze for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Freeze for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Freeze for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Freeze for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Freeze for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Freeze for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Freeze for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Freeze for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Freeze for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Freeze for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Freeze for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Freeze for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Freeze for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Freeze for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Freeze for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Freeze for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Freeze for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Freeze for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Freeze for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Freeze for Point",1,["crabgrab::util::Point"]],["impl Freeze for Rect",1,["crabgrab::util::Rect"]],["impl Freeze for Size",1,["crabgrab::util::Size"]],["impl<'content> Freeze for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Freeze for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Freeze for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Freeze for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Freeze for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Freeze for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Freeze for FrameBitmapRgbaF16x4<Data>
    where\n Data: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Freeze for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataBgra: Freeze,\n DataArgbPacked: Freeze,\n DataRgbaF16: Freeze,\n DataLuma: Freeze,\n DataChroma: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Freeze for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n LumaData: Freeze,\n ChromaData: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Freeze for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/marker/trait.Send.js b/docs/macos_docs/trait.impl/core/marker/trait.Send.js index 33137b28..708ea3b7 100644 --- a/docs/macos_docs/trait.impl/core/marker/trait.Send.js +++ b/docs/macos_docs/trait.impl/core/marker/trait.Send.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !Send for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !Send for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Send for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Send for CaptureConfigError"],["impl Send for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Send for StreamCreateError"],["impl Send for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Send for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Send for StreamStopError"],["impl Send for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Send for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Send for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Send for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Send for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Send for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Send for ScreenshotError"],["impl Send for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Send for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Send for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Send for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Send for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Send for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Send for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Send for CapturableContent"],["impl Send for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Send for CapturableDisplay"],["impl Send for CapturableWindow"],["impl Send for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Send for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Send for CaptureAccessToken"],["impl Send for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Send for CaptureStream"],["impl Send for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Send for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Send for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Send for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Send for AudioFrame"],["impl Send for VideoFrame"],["impl Send for Point",1,["crabgrab::util::Point"]],["impl Send for Rect",1,["crabgrab::util::Rect"]],["impl Send for Size",1,["crabgrab::util::Size"]],["impl<'content> Send for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Send for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Send for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Send for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !Send for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !Send for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Send for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Send for CaptureConfigError"],["impl Send for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Send for StreamCreateError"],["impl Send for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Send for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Send for StreamStopError"],["impl Send for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Send for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Send for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Send for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Send for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Send for ScreenshotError"],["impl Send for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Send for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Send for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Send for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Send for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Send for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Send for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Send for CapturableContent"],["impl Send for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Send for CapturableDisplay"],["impl Send for CapturableWindow"],["impl Send for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Send for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Send for CaptureAccessToken"],["impl Send for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Send for CaptureStream"],["impl Send for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Send for AudioFrame"],["impl Send for VideoFrame"],["impl Send for Point",1,["crabgrab::util::Point"]],["impl Send for Rect",1,["crabgrab::util::Rect"]],["impl Send for Size",1,["crabgrab::util::Size"]],["impl<'content> Send for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Send for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Send for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Send for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Send for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Send for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Send for FrameBitmapRgbaF16x4<Data>
    where\n Data: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Send for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataBgra: Send,\n DataArgbPacked: Send,\n DataRgbaF16: Send,\n DataLuma: Send,\n DataChroma: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Send for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n LumaData: Send,\n ChromaData: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Send for PooledBitmap<T>
    where\n T: Send,
    ",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/marker/trait.StructuralPartialEq.js b/docs/macos_docs/trait.impl/core/marker/trait.StructuralPartialEq.js index 541a5583..a9049e93 100644 --- a/docs/macos_docs/trait.impl/core/marker/trait.StructuralPartialEq.js +++ b/docs/macos_docs/trait.impl/core/marker/trait.StructuralPartialEq.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl StructuralPartialEq for CapturePixelFormat"],["impl StructuralPartialEq for MetalVideoFramePlaneTexture"],["impl StructuralPartialEq for WgpuVideoFramePlaneTexture"],["impl StructuralPartialEq for MacosCaptureResolutionType"],["impl StructuralPartialEq for MacosWindowLevel"],["impl StructuralPartialEq for CapturableWindow"]] +"crabgrab":[["impl StructuralPartialEq for CapturePixelFormat"],["impl StructuralPartialEq for MetalVideoFramePlaneTexture"],["impl StructuralPartialEq for WgpuVideoFramePlaneTexture"],["impl StructuralPartialEq for MacosCaptureResolutionType"],["impl StructuralPartialEq for MacosWindowLevel"],["impl StructuralPartialEq for CapturableWindow"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/marker/trait.Sync.js b/docs/macos_docs/trait.impl/core/marker/trait.Sync.js index 7403477b..ac69ffd3 100644 --- a/docs/macos_docs/trait.impl/core/marker/trait.Sync.js +++ b/docs/macos_docs/trait.impl/core/marker/trait.Sync.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !Sync for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !Sync for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !Sync for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Sync for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Sync for CaptureConfigError"],["impl Sync for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Sync for StreamCreateError"],["impl Sync for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Sync for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Sync for StreamStopError"],["impl Sync for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Sync for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Sync for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Sync for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Sync for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Sync for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Sync for ScreenshotError"],["impl Sync for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Sync for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Sync for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Sync for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Sync for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Sync for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Sync for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Sync for CapturableContent"],["impl Sync for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Sync for CapturableDisplay"],["impl Sync for CapturableWindow"],["impl Sync for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Sync for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Sync for CaptureAccessToken"],["impl Sync for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Sync for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Sync for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Sync for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Sync for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Sync for AudioFrame"],["impl Sync for VideoFrame"],["impl Sync for Point",1,["crabgrab::util::Point"]],["impl Sync for Rect",1,["crabgrab::util::Rect"]],["impl Sync for Size",1,["crabgrab::util::Size"]],["impl<'content> Sync for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Sync for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Sync for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Sync for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !Sync for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !Sync for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !Sync for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Sync for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Sync for CaptureConfigError"],["impl Sync for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Sync for StreamCreateError"],["impl Sync for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Sync for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Sync for StreamStopError"],["impl Sync for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Sync for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Sync for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Sync for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Sync for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Sync for ScreenshotError"],["impl Sync for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Sync for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Sync for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Sync for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Sync for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Sync for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Sync for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Sync for CapturableContent"],["impl Sync for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Sync for CapturableDisplay"],["impl Sync for CapturableWindow"],["impl Sync for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Sync for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Sync for CaptureAccessToken"],["impl Sync for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Sync for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Sync for AudioFrame"],["impl Sync for VideoFrame"],["impl Sync for Point",1,["crabgrab::util::Point"]],["impl Sync for Rect",1,["crabgrab::util::Rect"]],["impl Sync for Size",1,["crabgrab::util::Size"]],["impl<'content> Sync for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Sync for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Sync for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Sync for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Sync for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Sync for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Sync for FrameBitmapRgbaF16x4<Data>
    where\n Data: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Sync for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataBgra: Sync,\n DataArgbPacked: Sync,\n DataRgbaF16: Sync,\n DataLuma: Sync,\n DataChroma: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Sync for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n LumaData: Sync,\n ChromaData: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Sync for PooledBitmap<T>
    where\n T: Sync + Send,
    ",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/marker/trait.Unpin.js b/docs/macos_docs/trait.impl/core/marker/trait.Unpin.js index 8b1c9389..638fa92a 100644 --- a/docs/macos_docs/trait.impl/core/marker/trait.Unpin.js +++ b/docs/macos_docs/trait.impl/core/marker/trait.Unpin.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Unpin for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Unpin for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Unpin for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Unpin for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Unpin for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Unpin for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Unpin for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Unpin for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Unpin for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Unpin for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Unpin for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Unpin for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Unpin for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Unpin for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Unpin for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Unpin for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Unpin for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Unpin for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Unpin for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Unpin for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Unpin for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Unpin for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Unpin for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Unpin for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Unpin for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Unpin for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Unpin for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Unpin for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Unpin for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Unpin for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Unpin for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Unpin for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Unpin for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Unpin for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Unpin for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Unpin for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Unpin for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Unpin for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Unpin for Point",1,["crabgrab::util::Point"]],["impl Unpin for Rect",1,["crabgrab::util::Rect"]],["impl Unpin for Size",1,["crabgrab::util::Size"]],["impl<'content> Unpin for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Unpin for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Unpin for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Unpin for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl Unpin for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Unpin for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Unpin for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Unpin for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Unpin for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Unpin for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Unpin for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Unpin for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Unpin for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Unpin for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl Unpin for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl Unpin for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl Unpin for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Unpin for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Unpin for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Unpin for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Unpin for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Unpin for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Unpin for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl Unpin for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl Unpin for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Unpin for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Unpin for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Unpin for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Unpin for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Unpin for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Unpin for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Unpin for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Unpin for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Unpin for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Unpin for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Unpin for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl Unpin for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Unpin for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Unpin for Point",1,["crabgrab::util::Point"]],["impl Unpin for Rect",1,["crabgrab::util::Rect"]],["impl Unpin for Size",1,["crabgrab::util::Size"]],["impl<'content> Unpin for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Unpin for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Unpin for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Unpin for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Unpin for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Unpin for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Unpin for FrameBitmapRgbaF16x4<Data>
    where\n Data: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Unpin for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataBgra: Unpin,\n DataArgbPacked: Unpin,\n DataRgbaF16: Unpin,\n DataLuma: Unpin,\n DataChroma: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Unpin for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n LumaData: Unpin,\n ChromaData: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Unpin for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/ops/drop/trait.Drop.js b/docs/macos_docs/trait.impl/core/ops/drop/trait.Drop.js index 7ea22870..0c2395b4 100644 --- a/docs/macos_docs/trait.impl/core/ops/drop/trait.Drop.js +++ b/docs/macos_docs/trait.impl/core/ops/drop/trait.Drop.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Drop for IoSurface"]] +"crabgrab":[["impl Drop for IoSurface"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 14d096cc..b961d5bb 100644 --- a/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !RefUnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !RefUnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !RefUnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl !RefUnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl !RefUnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl !RefUnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !RefUnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !RefUnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl !RefUnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl RefUnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl RefUnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl RefUnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl RefUnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl RefUnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl RefUnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl RefUnwindSafe for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl RefUnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl RefUnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl RefUnwindSafe for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl RefUnwindSafe for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl RefUnwindSafe for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl RefUnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl RefUnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl RefUnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl RefUnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl RefUnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl RefUnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl RefUnwindSafe for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl RefUnwindSafe for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl RefUnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl RefUnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl RefUnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl RefUnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl RefUnwindSafe for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl RefUnwindSafe for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl RefUnwindSafe for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl RefUnwindSafe for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl RefUnwindSafe for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl RefUnwindSafe for Point",1,["crabgrab::util::Point"]],["impl RefUnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl RefUnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> !RefUnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> !RefUnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> RefUnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> RefUnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !RefUnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !RefUnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !RefUnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl !RefUnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl !RefUnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl !RefUnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !RefUnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !RefUnwindSafe for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl !RefUnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl !RefUnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl RefUnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl RefUnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl RefUnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl RefUnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl RefUnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl RefUnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl RefUnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl RefUnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl RefUnwindSafe for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl RefUnwindSafe for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl RefUnwindSafe for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl RefUnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl RefUnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl RefUnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl RefUnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl RefUnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl RefUnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl RefUnwindSafe for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl RefUnwindSafe for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl RefUnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl RefUnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl RefUnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl RefUnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl RefUnwindSafe for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl RefUnwindSafe for Point",1,["crabgrab::util::Point"]],["impl RefUnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl RefUnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> !RefUnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> !RefUnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> RefUnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> RefUnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> RefUnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> RefUnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> RefUnwindSafe for FrameBitmapRgbaF16x4<Data>
    where\n Data: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> RefUnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataBgra: RefUnwindSafe,\n DataArgbPacked: RefUnwindSafe,\n DataRgbaF16: RefUnwindSafe,\n DataLuma: RefUnwindSafe,\n DataChroma: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> RefUnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n LumaData: RefUnwindSafe,\n ChromaData: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> !RefUnwindSafe for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index 48aa2413..30ff2ff4 100644 --- a/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/docs/macos_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !UnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !UnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !UnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl !UnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl !UnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl !UnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !UnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !UnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl !UnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl UnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl UnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl UnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl UnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl UnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl UnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl UnwindSafe for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl UnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl UnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl UnwindSafe for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl UnwindSafe for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl UnwindSafe for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl UnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl UnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl UnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl UnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl UnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl UnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl UnwindSafe for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl UnwindSafe for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl UnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl UnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl UnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl UnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl UnwindSafe for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl UnwindSafe for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl UnwindSafe for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl UnwindSafe for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl UnwindSafe for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl UnwindSafe for Point",1,["crabgrab::util::Point"]],["impl UnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl UnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> !UnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> !UnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> UnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> UnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !UnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !UnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl !UnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl !UnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl !UnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl !UnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !UnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !UnwindSafe for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl !UnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl !UnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl UnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl UnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl UnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl UnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl UnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl UnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl UnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl UnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl UnwindSafe for GetIoSurfaceError",1,["crabgrab::feature::iosurface::GetIoSurfaceError"]],["impl UnwindSafe for MacosVideoFrameError",1,["crabgrab::feature::metal::MacosVideoFrameError"]],["impl UnwindSafe for MetalVideoFramePlaneTexture",1,["crabgrab::feature::metal::MetalVideoFramePlaneTexture"]],["impl UnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl UnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl UnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl UnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl UnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl UnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl UnwindSafe for MacosCaptureResolutionType",1,["crabgrab::platform::macos::capture_stream::MacosCaptureResolutionType"]],["impl UnwindSafe for MacosWindowLevel",1,["crabgrab::platform::macos::capturable_content::MacosWindowLevel"]],["impl UnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl UnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl UnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl UnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl UnwindSafe for IoSurface",1,["crabgrab::feature::iosurface::IoSurface"]],["impl UnwindSafe for Point",1,["crabgrab::util::Point"]],["impl UnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl UnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> !UnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> !UnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> UnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> UnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> UnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> UnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> UnwindSafe for FrameBitmapRgbaF16x4<Data>
    where\n Data: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> UnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataBgra: UnwindSafe,\n DataArgbPacked: UnwindSafe,\n DataRgbaF16: UnwindSafe,\n DataLuma: UnwindSafe,\n DataChroma: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> UnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n LumaData: UnwindSafe,\n ChromaData: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> !UnwindSafe for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataChroma.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataChroma.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataChroma.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataLuma.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataLuma.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataLuma.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeArgbUnormPacked2101010.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeArgbUnormPacked2101010.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeArgbUnormPacked2101010.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeBgra8x4.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeBgra8x4.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeBgra8x4.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeChroma.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeChroma.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeChroma.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeLuma.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeLuma.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeLuma.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeRgbaF16x4.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeRgbaF16x4.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.DataTypeRgbaF16x4.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.ZeroValue.js b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.ZeroValue.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/macos_docs/trait.impl/crabgrab/feature/bitmap/trait.ZeroValue.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/macos_docs/type.impl/crabgrab/feature/bitmap/enum.FrameBitmap.js b/docs/macos_docs/type.impl/crabgrab/feature/bitmap/enum.FrameBitmap.js new file mode 100644 index 00000000..f28ad58b --- /dev/null +++ b/docs/macos_docs/type.impl/crabgrab/feature/bitmap/enum.FrameBitmap.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"crabgrab":[] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/all.html b/docs/windows_docs/crabgrab/all.html index 6f9fc6e7..980d923e 100644 --- a/docs/windows_docs/crabgrab/all.html +++ b/docs/windows_docs/crabgrab/all.html @@ -1,2 +1,2 @@ -List of all items in this crate -

    List of all items

    Structs

    Enums

    Traits

    Functions

    \ No newline at end of file +List of all items in this crate +

    List of all items

    Structs

    Enums

    Traits

    Functions

    Type Aliases

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/capturable_content/enum.CapturableContentError.html b/docs/windows_docs/crabgrab/capturable_content/enum.CapturableContentError.html index 9c787968..a103922f 100644 --- a/docs/windows_docs/crabgrab/capturable_content/enum.CapturableContentError.html +++ b/docs/windows_docs/crabgrab/capturable_content/enum.CapturableContentError.html @@ -1,4 +1,4 @@ -CapturableContentError in crabgrab::capturable_content - Rust +CapturableContentError in crabgrab::capturable_content - Rust
    pub enum CapturableContentError {
         Other(String),
     }
    Expand description

    Represents an error that occurred when enumerating capturable content

    diff --git a/docs/windows_docs/crabgrab/capturable_content/index.html b/docs/windows_docs/crabgrab/capturable_content/index.html index 176d819f..431a9689 100644 --- a/docs/windows_docs/crabgrab/capturable_content/index.html +++ b/docs/windows_docs/crabgrab/capturable_content/index.html @@ -1,3 +1,3 @@ -crabgrab::capturable_content - Rust +crabgrab::capturable_content - Rust
    Expand description

    Enumeration of capturable items

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableApplication.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableApplication.html index fc14da93..3375baa9 100644 --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableApplication.html +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableApplication.html @@ -1,4 +1,4 @@ -CapturableApplication in crabgrab::capturable_content - Rust +CapturableApplication in crabgrab::capturable_content - Rust
    pub struct CapturableApplication { /* private fields */ }
    Expand description

    Represents an application with capturable windows

    Implementations§

    source§

    impl CapturableApplication

    source

    pub fn identifier(&self) -> String

    Gets the “identifier” of the application

    On MacOS, this is the application bundle, and on windows, this is the application file name

    diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContent.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContent.html index 270d92ec..d51c7348 100644 --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContent.html +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContent.html @@ -1,4 +1,4 @@ -CapturableContent in crabgrab::capturable_content - Rust +CapturableContent in crabgrab::capturable_content - Rust
    pub struct CapturableContent { /* private fields */ }
    Expand description

    A collection of capturable content (windows, screens)

    Implementations§

    source§

    impl CapturableContent

    source

    pub async fn new( filter: CapturableContentFilter diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html index 2d26ead6..901f9663 100644 --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableContentFilter.html @@ -1,4 +1,4 @@ -CapturableContentFilter in crabgrab::capturable_content - Rust +CapturableContentFilter in crabgrab::capturable_content - Rust
    pub struct CapturableContentFilter { /* private fields */ }
    Expand description

    Selects the kind of capturable content to enumerate

    Implementations§

    source§

    impl CapturableContentFilter

    source

    pub fn new(displays: bool, windows: Option<CapturableWindowFilter>) -> Self

    Create a new content filter with the given filtering options

    source

    pub fn is_empty(&self) -> bool

    Whether this filter allows any capturable content

    diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplay.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplay.html index 86859eeb..ec37087c 100644 --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplay.html +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplay.html @@ -1,4 +1,4 @@ -CapturableDisplay in crabgrab::capturable_content - Rust +CapturableDisplay in crabgrab::capturable_content - Rust
    pub struct CapturableDisplay { /* private fields */ }
    Expand description

    Represents a capturable display

    Implementations§

    source§

    impl CapturableDisplay

    source

    pub fn rect(&self) -> Rect

    Gets the virtual screen rectangle of this display

    Note: Currently on windows, this is only evaluated at the time of display enumeration

    diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html index bca6854a..3d80a645 100644 --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableDisplayIterator.html @@ -1,4 +1,4 @@ -CapturableDisplayIterator in crabgrab::capturable_content - Rust +CapturableDisplayIterator in crabgrab::capturable_content - Rust
    pub struct CapturableDisplayIterator<'content> { /* private fields */ }
    Expand description

    An iterator over capturable displays

    Trait Implementations§

    source§

    impl ExactSizeIterator for CapturableDisplayIterator<'_>

    source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl Iterator for CapturableDisplayIterator<'_>

    §

    type Item = CapturableDisplay

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( &mut self diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindow.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindow.html index 181ebb53..bbb7822a 100644 --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindow.html +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindow.html @@ -1,4 +1,4 @@ -CapturableWindow in crabgrab::capturable_content - Rust +CapturableWindow in crabgrab::capturable_content - Rust
    pub struct CapturableWindow { /* private fields */ }
    Expand description

    Represents a capturable application window

    Implementations§

    source§

    impl CapturableWindow

    source

    pub fn title(&self) -> String

    Gets the title of the window

    source

    pub fn rect(&self) -> Rect

    Gets the virtual screen rectangle of the window

    diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html index 56c2f041..75fbdf06 100644 --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowFilter.html @@ -1,4 +1,4 @@ -CapturableWindowFilter in crabgrab::capturable_content - Rust +CapturableWindowFilter in crabgrab::capturable_content - Rust
    pub struct CapturableWindowFilter {
         pub desktop_windows: bool,
         pub onscreen_only: bool,
    diff --git a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html
    index c1930ab2..c1e36d9d 100644
    --- a/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html
    +++ b/docs/windows_docs/crabgrab/capturable_content/struct.CapturableWindowIterator.html
    @@ -1,4 +1,4 @@
    -CapturableWindowIterator in crabgrab::capturable_content - Rust
    +CapturableWindowIterator in crabgrab::capturable_content - Rust
         
    pub struct CapturableWindowIterator<'content> { /* private fields */ }
    Expand description

    An iterator over capturable windows

    Trait Implementations§

    source§

    impl ExactSizeIterator for CapturableWindowIterator<'_>

    1.0.0 · source§

    fn len(&self) -> usize

    Returns the exact remaining length of the iterator. Read more
    source§

    fn is_empty(&self) -> bool

    🔬This is a nightly-only experimental API. (exact_size_is_empty)
    Returns true if the iterator is empty. Read more
    source§

    impl Iterator for CapturableWindowIterator<'_>

    §

    type Item = CapturableWindow

    The type of the elements being iterated over.
    source§

    fn next(&mut self) -> Option<Self::Item>

    Advances the iterator and returns the next value. Read more
    source§

    fn size_hint(&self) -> (usize, Option<usize>)

    Returns the bounds on the remaining length of the iterator. Read more
    source§

    fn next_chunk<const N: usize>( &mut self diff --git a/docs/windows_docs/crabgrab/capture_stream/enum.CaptureConfigError.html b/docs/windows_docs/crabgrab/capture_stream/enum.CaptureConfigError.html index 373dc017..81076251 100644 --- a/docs/windows_docs/crabgrab/capture_stream/enum.CaptureConfigError.html +++ b/docs/windows_docs/crabgrab/capture_stream/enum.CaptureConfigError.html @@ -1,11 +1,11 @@ -CaptureConfigError in crabgrab::capture_stream - Rust +CaptureConfigError in crabgrab::capture_stream - Rust
    pub enum CaptureConfigError {
         UnsupportedPixelFormat,
         InvalidBufferCount,
     }
    Expand description

    Represents an error creating the capture config

    Variants§

    §

    UnsupportedPixelFormat

    The pixel format is unsupported by the implementation

    §

    InvalidBufferCount

    The buffer count is out of the valid range for the implementation

    -

    Trait Implementations§

    source§

    impl Clone for CaptureConfigError

    source§

    fn clone(&self) -> CaptureConfigError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaptureConfigError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CaptureConfigError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CaptureConfigError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for CaptureConfigError

    source§

    impl Sync for CaptureConfigError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for CaptureConfigError

    source§

    fn clone(&self) -> CaptureConfigError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaptureConfigError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for CaptureConfigError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for CaptureConfigError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for CaptureConfigError

    source§

    impl Sync for CaptureConfigError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html b/docs/windows_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html index 90b431f4..5c97292e 100644 --- a/docs/windows_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html +++ b/docs/windows_docs/crabgrab/capture_stream/enum.CapturePixelFormat.html @@ -1,4 +1,4 @@ -CapturePixelFormat in crabgrab::capture_stream - Rust +CapturePixelFormat in crabgrab::capture_stream - Rust
    #[non_exhaustive]
    pub enum CapturePixelFormat { Bgra8888, Argb2101010, diff --git a/docs/windows_docs/crabgrab/capture_stream/enum.StreamCreateError.html b/docs/windows_docs/crabgrab/capture_stream/enum.StreamCreateError.html index d253f4a5..abd1d076 100644 --- a/docs/windows_docs/crabgrab/capture_stream/enum.StreamCreateError.html +++ b/docs/windows_docs/crabgrab/capture_stream/enum.StreamCreateError.html @@ -1,4 +1,4 @@ -StreamCreateError in crabgrab::capture_stream - Rust +StreamCreateError in crabgrab::capture_stream - Rust
    pub enum StreamCreateError {
         Other(String),
         UnsupportedPixelFormat,
    @@ -6,7 +6,7 @@
     }
    Expand description

    This represents an error when creating a capture stream

    Variants§

    §

    Other(String)

    §

    UnsupportedPixelFormat

    The supplied pixel format is unsupported by the implementation

    §

    UnauthorizedFeature(String)

    Requested features are not authorized

    -

    Trait Implementations§

    source§

    impl Clone for StreamCreateError

    source§

    fn clone(&self) -> StreamCreateError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamCreateError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamCreateError

    source§

    impl Sync for StreamCreateError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Clone for StreamCreateError

    source§

    fn clone(&self) -> StreamCreateError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamCreateError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamCreateError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamCreateError

    source§

    impl Sync for StreamCreateError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/capture_stream/enum.StreamError.html b/docs/windows_docs/crabgrab/capture_stream/enum.StreamError.html index 1a2d13bf..41285603 100644 --- a/docs/windows_docs/crabgrab/capture_stream/enum.StreamError.html +++ b/docs/windows_docs/crabgrab/capture_stream/enum.StreamError.html @@ -1,4 +1,4 @@ -StreamError in crabgrab::capture_stream - Rust +StreamError in crabgrab::capture_stream - Rust
    pub enum StreamError {
         Other(String),
     }
    Expand description

    This represents an error during a stream, for example a failure to retrieve a video or audio frame

    diff --git a/docs/windows_docs/crabgrab/capture_stream/enum.StreamEvent.html b/docs/windows_docs/crabgrab/capture_stream/enum.StreamEvent.html index 8edf9da4..1bb57405 100644 --- a/docs/windows_docs/crabgrab/capture_stream/enum.StreamEvent.html +++ b/docs/windows_docs/crabgrab/capture_stream/enum.StreamEvent.html @@ -1,4 +1,4 @@ -StreamEvent in crabgrab::capture_stream - Rust +StreamEvent in crabgrab::capture_stream - Rust
    pub enum StreamEvent {
         Audio(AudioFrame),
         Video(VideoFrame),
    diff --git a/docs/windows_docs/crabgrab/capture_stream/enum.StreamStopError.html b/docs/windows_docs/crabgrab/capture_stream/enum.StreamStopError.html
    index 74064625..c67741ea 100644
    --- a/docs/windows_docs/crabgrab/capture_stream/enum.StreamStopError.html
    +++ b/docs/windows_docs/crabgrab/capture_stream/enum.StreamStopError.html
    @@ -1,10 +1,10 @@
    -StreamStopError in crabgrab::capture_stream - Rust
    +StreamStopError in crabgrab::capture_stream - Rust
         
    pub enum StreamStopError {
         Other(String),
         AlreadyStopped,
     }
    Expand description

    This represents an error while stopping a stream

    Variants§

    §

    Other(String)

    §

    AlreadyStopped

    The stream was already stopped

    -

    Trait Implementations§

    source§

    impl Debug for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamStopError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamStopError

    source§

    impl Sync for StreamStopError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Trait Implementations§

    source§

    impl Debug for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for StreamStopError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for StreamStopError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more
    source§

    impl Send for StreamStopError

    source§

    impl Sync for StreamStopError

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/capture_stream/index.html b/docs/windows_docs/crabgrab/capture_stream/index.html index 4a3ad017..bdc923d1 100644 --- a/docs/windows_docs/crabgrab/capture_stream/index.html +++ b/docs/windows_docs/crabgrab/capture_stream/index.html @@ -1,3 +1,3 @@ -crabgrab::capture_stream - Rust +crabgrab::capture_stream - Rust
    Expand description

    The actual capture stream and related constructs

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html b/docs/windows_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html index 73dcf053..65821112 100644 --- a/docs/windows_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html +++ b/docs/windows_docs/crabgrab/capture_stream/struct.AudioCaptureConfig.html @@ -1,4 +1,4 @@ -AudioCaptureConfig in crabgrab::capture_stream - Rust +AudioCaptureConfig in crabgrab::capture_stream - Rust
    pub struct AudioCaptureConfig { /* private fields */ }
    Expand description

    Configuration settings for audio streams

    Implementations§

    source§

    impl AudioCaptureConfig

    source

    pub fn new() -> Self

    Creates a new audio capture config with default settings:

    Trait Implementations§

    source§

    impl Clone for CaptureConfig

    source§

    fn clone(&self) -> CaptureConfig

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for CaptureConfig

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl WgpuCaptureConfigExt for CaptureConfig

    source§

    fn with_wgpu_device( self, wgpu_device: Arc<dyn AsRef<Device> + Send + Sync + 'static> ) -> Result<Self, String>

    Supply a Wgpu device to the config, allowing the generation of Wgpu textures from video frames

    diff --git a/docs/windows_docs/crabgrab/capture_stream/struct.CaptureStream.html b/docs/windows_docs/crabgrab/capture_stream/struct.CaptureStream.html index a63e88df..9d93b13f 100644 --- a/docs/windows_docs/crabgrab/capture_stream/struct.CaptureStream.html +++ b/docs/windows_docs/crabgrab/capture_stream/struct.CaptureStream.html @@ -1,4 +1,4 @@ -CaptureStream in crabgrab::capture_stream - Rust +CaptureStream in crabgrab::capture_stream - Rust
    pub struct CaptureStream { /* private fields */ }
    Expand description

    Represents an active capture stream

    Implementations§

    source§

    impl CaptureStream

    source

    pub fn test_access(borderless: bool) -> Option<CaptureAccessToken>

    Test whether the calling application has permission to capture content

    source

    pub async fn request_access(borderless: bool) -> Option<CaptureAccessToken>

    Prompt the user for permission to capture content

    @@ -9,7 +9,7 @@ callback: impl FnMut(Result<StreamEvent, StreamError>) + Send + 'static ) -> Result<Self, StreamCreateError>

    Start a new capture stream with the given stream callback

    source

    pub fn stop(&mut self) -> Result<(), StreamStopError>

    Stop the capture

    -

    Trait Implementations§

    source§

    impl WgpuCaptureStreamExt for CaptureStream

    source§

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)
    source§

    fn get_wgpu_device_wrapper( +

    Trait Implementations§

    source§

    impl WgpuCaptureStreamExt for CaptureStream

    source§

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)
    source§

    fn get_wgpu_device_wrapper( &self ) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>

    Gets the Wgpu device wrapper supplied to CaptureConfig::with_wgpu_device(..)
    source§

    impl WindowsDx11CaptureStream for CaptureStream

    source§

    fn get_dx11_device(&self) -> ID3D11Device

    Get the underlying DX11 device used for frame capture
    source§

    impl WindowsDxgiCaptureStream for CaptureStream

    source§

    fn get_dxgi_adapter( &self diff --git a/docs/windows_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html b/docs/windows_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html index 93c4e0f7..38598f28 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/enum.FrameBitmap.html @@ -1,11 +1,41 @@ -FrameBitmap in crabgrab::feature::bitmap - Rust -
    pub enum FrameBitmap {
    -    BgraUnorm8x4(FrameBitmapBgraUnorm8x4),
    -    RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102),
    -    RgbaF16x4(FrameBitmapRgbaF16x4),
    -    YCbCr(FrameBitmapYCbCr),
    +FrameBitmap in crabgrab::feature::bitmap - Rust
    +    
    pub enum FrameBitmap<DataBgra: BitmapDataBgra8x4, DataArgbPacked: BitmapDataArgbUnormPacked2101010, DataRgbaF16: BitmapDataRgbaF16x4, DataLuma: BitmapDataLuma, DataChroma: BitmapDataChroma> {
    +    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<DataBgra>),
    +    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<DataArgbPacked>),
    +    RgbaF16x4(FrameBitmapRgbaF16x4<DataRgbaF16>),
    +    YCbCr(FrameBitmapYCbCr<DataLuma, DataChroma>),
     }
    Expand description

    A bitmap image of the selected format

    -

    Variants§

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Variants§

    §

    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<DataBgra>)

    §

    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<DataArgbPacked>)

    §

    RgbaF16x4(FrameBitmapRgbaF16x4<DataRgbaF16>)

    §

    YCbCr(FrameBitmapYCbCr<DataLuma, DataChroma>)

    Auto Trait Implementations§

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Freeze for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataArgbPacked: Freeze, + DataBgra: Freeze, + DataChroma: Freeze, + DataLuma: Freeze, + DataRgbaF16: Freeze,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> RefUnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataArgbPacked: RefUnwindSafe, + DataBgra: RefUnwindSafe, + DataChroma: RefUnwindSafe, + DataLuma: RefUnwindSafe, + DataRgbaF16: RefUnwindSafe,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Send for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataArgbPacked: Send, + DataBgra: Send, + DataChroma: Send, + DataLuma: Send, + DataRgbaF16: Send,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Sync for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataArgbPacked: Sync, + DataBgra: Sync, + DataChroma: Sync, + DataLuma: Sync, + DataRgbaF16: Sync,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Unpin for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataArgbPacked: Unpin, + DataBgra: Unpin, + DataChroma: Unpin, + DataLuma: Unpin, + DataRgbaF16: Unpin,

    §

    impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> UnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where + DataArgbPacked: UnwindSafe, + DataBgra: UnwindSafe, + DataChroma: UnwindSafe, + DataLuma: UnwindSafe, + DataRgbaF16: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html b/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html index b90ae913..4e5fba0d 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoFrameBitmapError.html @@ -1,8 +1,8 @@ -VideoFrameBitmapError in crabgrab::feature::bitmap - Rust -
    pub enum VideoFrameBitmapError {
    +VideoFrameBitmapError in crabgrab::feature::bitmap - Rust
    +    
    pub enum VideoFrameBitmapError {
         Other(String),
     }
    Expand description

    Represents an error while generating a frame bitmap

    -

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for VideoFrameBitmapError

    source§

    fn clone(&self) -> VideoFrameBitmapError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for VideoFrameBitmapError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for VideoFrameBitmapError

    source§

    fn clone(&self) -> VideoFrameBitmapError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for VideoFrameBitmapError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for VideoFrameBitmapError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoRange.html b/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoRange.html index db31f187..a2719ea4 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoRange.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/enum.VideoRange.html @@ -1,5 +1,5 @@ -VideoRange in crabgrab::feature::bitmap - Rust -
    pub enum VideoRange {
    +VideoRange in crabgrab::feature::bitmap - Rust
    +    
    pub enum VideoRange {
         Video,
         Full,
     }
    Expand description

    The video range for a YCbCr format bitmap

    diff --git a/docs/windows_docs/crabgrab/feature/bitmap/index.html b/docs/windows_docs/crabgrab/feature/bitmap/index.html index 974cf617..278c81b6 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/index.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/index.html @@ -1,4 +1,4 @@ -crabgrab::feature::bitmap - Rust -

    Module crabgrab::feature::bitmap

    source ·
    Expand description

    Frame to Bitmap conversion +crabgrab::feature::bitmap - Rust

    +

    Module crabgrab::feature::bitmap

    source ·
    Expand description

    Frame to Bitmap conversion (requires bitmap feature)

    -

    Structs§

    Enums§

    Traits§

    \ No newline at end of file +

    Structs§

    Enums§

    Traits§

    Type Aliases§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/sidebar-items.js b/docs/windows_docs/crabgrab/feature/bitmap/sidebar-items.js index 343d6815..c0e5f1e9 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/sidebar-items.js +++ b/docs/windows_docs/crabgrab/feature/bitmap/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"enum":["FrameBitmap","VideoFrameBitmapError","VideoRange"],"struct":["FrameBitmapBgraUnorm8x4","FrameBitmapRgbaF16x4","FrameBitmapRgbaUnormPacked1010102","FrameBitmapYCbCr"],"trait":["VideoFrameBitmap"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"enum":["FrameBitmap","VideoFrameBitmapError","VideoRange"],"struct":["FrameBitmapArgbUnormPacked2101010","FrameBitmapBgraUnorm8x4","FrameBitmapPool","FrameBitmapRgbaF16x4","FrameBitmapYCbCr","PooledBitmap"],"trait":["BitmapDataArgbUnormPacked2101010","BitmapDataBgra8x4","BitmapDataChroma","BitmapDataLuma","BitmapDataRgbaF16x4","VideoFrameBitmap"],"type":["BoxedSliceFrameBitmap","PooledFrameBitmap"]}; \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapArgbUnormPacked2101010.html b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapArgbUnormPacked2101010.html new file mode 100644 index 00000000..33fe912f --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapArgbUnormPacked2101010.html @@ -0,0 +1,26 @@ +FrameBitmapArgbUnormPacked2101010 in crabgrab::feature::bitmap - Rust +
    pub struct FrameBitmapArgbUnormPacked2101010<Data: BitmapDataArgbUnormPacked2101010> {
    +    pub data: Data,
    +    pub width: usize,
    +    pub height: usize,
    +}
    Expand description

    A Rgba1010102 format bitmap

    +

    Fields§

    §data: Data§width: usize§height: usize

    Auto Trait Implementations§

    §

    impl<Data> Freeze for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Freeze,

    §

    impl<Data> RefUnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: RefUnwindSafe,

    §

    impl<Data> Send for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Send,

    §

    impl<Data> Sync for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Sync,

    §

    impl<Data> Unpin for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: Unpin,

    §

    impl<Data> UnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where + Data: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where + T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where + T: Sync,

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html index 76e02561..dfc0373f 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapBgraUnorm8x4.html @@ -1,10 +1,16 @@ -FrameBitmapBgraUnorm8x4 in crabgrab::feature::bitmap - Rust -
    pub struct FrameBitmapBgraUnorm8x4 {
    -    pub data: Box<[[u8; 4]]>,
    +FrameBitmapBgraUnorm8x4 in crabgrab::feature::bitmap - Rust
    +    
    pub struct FrameBitmapBgraUnorm8x4<Data: BitmapDataBgra8x4> {
    +    pub data: Data,
         pub width: usize,
         pub height: usize,
     }
    Expand description

    A Bgra8888 format bitmap

    -

    Fields§

    §data: Box<[[u8; 4]]>§width: usize§height: usize

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Fields§

    §data: Data§width: usize§height: usize

    Auto Trait Implementations§

    §

    impl<Data> Freeze for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Freeze,

    §

    impl<Data> RefUnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where + Data: RefUnwindSafe,

    §

    impl<Data> Send for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Send,

    §

    impl<Data> Sync for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Sync,

    §

    impl<Data> Unpin for FrameBitmapBgraUnorm8x4<Data>
    where + Data: Unpin,

    §

    impl<Data> UnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where + Data: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapPool.html b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapPool.html new file mode 100644 index 00000000..e718ae0f --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapPool.html @@ -0,0 +1,24 @@ +FrameBitmapPool in crabgrab::feature::bitmap - Rust +
    pub struct FrameBitmapPool { /* private fields */ }
    Expand description

    A pool of frame bitmaps

    +

    Implementations§

    source§

    impl FrameBitmapPool

    source

    pub fn new_with_initial_capacity( + capacity: usize, + initial_resolution: (usize, usize), + max: usize, + format: CapturePixelFormat +) -> Self

    Create a new bitmap pool with an initial capacity and resolution for the given format, limited to max pooled bitmaps

    +
    source

    pub fn new(max: usize) -> Self

    Create a new frame bitmap pool, limited to max pooled bitmaps

    +
    source

    pub fn free_pooled(&self)

    Free all pooled bitmaps - this happens automatically on drop(), but you can free them ahead of time if you need to.

    +

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where + T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where + T: Sync,

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html index 265a0b42..cb6c8064 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapRgbaF16x4.html @@ -1,10 +1,16 @@ -FrameBitmapRgbaF16x4 in crabgrab::feature::bitmap - Rust -
    pub struct FrameBitmapRgbaF16x4 {
    -    pub data: Box<[[f16; 4]]>,
    +FrameBitmapRgbaF16x4 in crabgrab::feature::bitmap - Rust
    +    
    pub struct FrameBitmapRgbaF16x4<Data: BitmapDataRgbaF16x4> {
    +    pub data: Data,
         pub width: usize,
         pub height: usize,
     }
    Expand description

    A RgbaF16x4 format bitmap

    -

    Fields§

    §data: Box<[[f16; 4]]>§width: usize§height: usize

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Fields§

    §data: Data§width: usize§height: usize

    Auto Trait Implementations§

    §

    impl<Data> Freeze for FrameBitmapRgbaF16x4<Data>
    where + Data: Freeze,

    §

    impl<Data> RefUnwindSafe for FrameBitmapRgbaF16x4<Data>
    where + Data: RefUnwindSafe,

    §

    impl<Data> Send for FrameBitmapRgbaF16x4<Data>
    where + Data: Send,

    §

    impl<Data> Sync for FrameBitmapRgbaF16x4<Data>
    where + Data: Sync,

    §

    impl<Data> Unpin for FrameBitmapRgbaF16x4<Data>
    where + Data: Unpin,

    §

    impl<Data> UnwindSafe for FrameBitmapRgbaF16x4<Data>
    where + Data: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html index ffed0d53..4b82904b 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/struct.FrameBitmapYCbCr.html @@ -1,9 +1,9 @@ -FrameBitmapYCbCr in crabgrab::feature::bitmap - Rust -
    pub struct FrameBitmapYCbCr {
    -    pub luma_data: Box<[u8]>,
    +FrameBitmapYCbCr in crabgrab::feature::bitmap - Rust
    +    
    pub struct FrameBitmapYCbCr<LumaData: BitmapDataLuma, ChromaData: BitmapDataChroma> {
    +    pub luma_data: LumaData,
         pub luma_width: usize,
         pub luma_height: usize,
    -    pub chroma_data: Box<[[u8; 2]]>,
    +    pub chroma_data: ChromaData,
         pub chroma_width: usize,
         pub chroma_height: usize,
         pub range: VideoRange,
    @@ -11,7 +11,19 @@
     

    Dual-planar, with luminance (Y) in one plane, and chrominance (CbCr) in another. Note that each plane may have a different size, as with V420 format, where the chroma plane is 2 by 2 blocks, but luma is per-pixel

    -

    Fields§

    §luma_data: Box<[u8]>§luma_width: usize§luma_height: usize§chroma_data: Box<[[u8; 2]]>§chroma_width: usize§chroma_height: usize§range: VideoRange

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +

    Fields§

    §luma_data: LumaData§luma_width: usize§luma_height: usize§chroma_data: ChromaData§chroma_width: usize§chroma_height: usize§range: VideoRange

    Auto Trait Implementations§

    §

    impl<LumaData, ChromaData> Freeze for FrameBitmapYCbCr<LumaData, ChromaData>
    where + ChromaData: Freeze, + LumaData: Freeze,

    §

    impl<LumaData, ChromaData> RefUnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where + ChromaData: RefUnwindSafe, + LumaData: RefUnwindSafe,

    §

    impl<LumaData, ChromaData> Send for FrameBitmapYCbCr<LumaData, ChromaData>
    where + ChromaData: Send, + LumaData: Send,

    §

    impl<LumaData, ChromaData> Sync for FrameBitmapYCbCr<LumaData, ChromaData>
    where + ChromaData: Sync, + LumaData: Sync,

    §

    impl<LumaData, ChromaData> Unpin for FrameBitmapYCbCr<LumaData, ChromaData>
    where + ChromaData: Unpin, + LumaData: Unpin,

    §

    impl<LumaData, ChromaData> UnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where + ChromaData: UnwindSafe, + LumaData: UnwindSafe,

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/feature/bitmap/struct.PooledBitmap.html b/docs/windows_docs/crabgrab/feature/bitmap/struct.PooledBitmap.html new file mode 100644 index 00000000..727ad1a0 --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/struct.PooledBitmap.html @@ -0,0 +1,27 @@ +PooledBitmap in crabgrab::feature::bitmap - Rust +
    pub struct PooledBitmap<T: Sized + Copy + Zeroable> {
    +    pub width: usize,
    +    pub height: usize,
    +    /* private fields */
    +}
    Expand description

    A pooled bitmap, belinging to it’s creator BitmapPool. When this bitmap is dropped, it will be returned to it’s pool.

    +

    Fields§

    §width: usize§height: usize

    Trait Implementations§

    source§

    impl<T: Sized + Zeroable + Copy> AsMut<[T]> for PooledBitmap<T>

    source§

    fn as_mut(&mut self) -> &mut [T]

    Converts this type into a mutable reference of the (usually inferred) input type.
    source§

    impl<T: Sized + Zeroable + Copy> AsRef<[T]> for PooledBitmap<T>

    source§

    fn as_ref(&self) -> &[T]

    Converts this type into a shared reference of the (usually inferred) input type.

    Auto Trait Implementations§

    §

    impl<T> Freeze for PooledBitmap<T>

    §

    impl<T> !RefUnwindSafe for PooledBitmap<T>

    §

    impl<T> Send for PooledBitmap<T>
    where + T: Send,

    §

    impl<T> Sync for PooledBitmap<T>
    where + T: Sync + Send,

    §

    impl<T> Unpin for PooledBitmap<T>

    §

    impl<T> !UnwindSafe for PooledBitmap<T>

    Blanket Implementations§

    source§

    impl<T> Any for T
    where + T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where + T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where + T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    +
    source§

    impl<T, U> Into<U> for T
    where + U: From<T>,

    source§

    fn into(self) -> U

    Calls U::from(self).

    +

    That is, this conversion is whatever the implementation of +From<T> for U chooses to do.

    +
    source§

    impl<T, U> TryFrom<U> for T
    where + U: Into<T>,

    §

    type Error = Infallible

    The type returned in the event of a conversion error.
    source§

    fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

    Performs the conversion.
    source§

    impl<T, U> TryInto<U> for T
    where + U: TryFrom<T>,

    §

    type Error = <U as TryFrom<T>>::Error

    The type returned in the event of a conversion error.
    source§

    fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

    Performs the conversion.
    source§

    impl<T> BitmapDataArgbUnormPacked2101010 for T
    where + T: AsRef<[u32]> + AsMut<[u32]>,

    source§

    impl<T> BitmapDataBgra8x4 for T
    where + T: AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]>,

    source§

    impl<T> BitmapDataChroma for T
    where + T: AsRef<[[u8; 2]]> + AsMut<[[u8; 2]]>,

    source§

    impl<T> BitmapDataLuma for T
    where + T: AsRef<[u8]> + AsMut<[u8]>,

    source§

    impl<T> BitmapDataRgbaF16x4 for T
    where + T: AsRef<[[f16; 4]]> + AsMut<[[f16; 4]]>,

    §

    impl<T> WasmNotSend for T
    where + T: Send,

    §

    impl<T> WasmNotSendSync for T
    where + T: WasmNotSend + WasmNotSync,

    §

    impl<T> WasmNotSync for T
    where + T: Sync,

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.html b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.html new file mode 100644 index 00000000..11ce8068 --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.html @@ -0,0 +1,3 @@ +BitmapDataArgbUnormPacked2101010 in crabgrab::feature::bitmap - Rust +
    pub trait BitmapDataArgbUnormPacked2101010: Sized + AsRef<[u32]> { }
    Expand description

    Bitmap data in the Argb2101010 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.html b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.html new file mode 100644 index 00000000..4d00155a --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.html @@ -0,0 +1,3 @@ +BitmapDataBgra8x4 in crabgrab::feature::bitmap - Rust +
    pub trait BitmapDataBgra8x4: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]> { }
    Expand description

    Bitmap data in the Bgra8888 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]>> BitmapDataBgra8x4 for T

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataChroma.html b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataChroma.html new file mode 100644 index 00000000..212e8385 --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataChroma.html @@ -0,0 +1,3 @@ +BitmapDataChroma in crabgrab::feature::bitmap - Rust +
    pub trait BitmapDataChroma: Sized + AsRef<[[u8; 2]]> { }
    Expand description

    Bitmap data in the CbCr Chroma/u8x2 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[u8; 2]]> + AsMut<[[u8; 2]]>> BitmapDataChroma for T

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataLuma.html b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataLuma.html new file mode 100644 index 00000000..cba38cbe --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataLuma.html @@ -0,0 +1,3 @@ +BitmapDataLuma in crabgrab::feature::bitmap - Rust +
    pub trait BitmapDataLuma: Sized + AsRef<[u8]> { }
    Expand description

    Bitmap data in the Luma/u8 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[u8]> + AsMut<[u8]>> BitmapDataLuma for T

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.html b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.html new file mode 100644 index 00000000..82e8687b --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.html @@ -0,0 +1,3 @@ +BitmapDataRgbaF16x4 in crabgrab::feature::bitmap - Rust +
    pub trait BitmapDataRgbaF16x4: Sized + AsRef<[[f16; 4]]> { }
    Expand description

    Bitmap data in the RgbaF16x4 format

    +

    Object Safety§

    This trait is not object safe.

    Implementors§

    source§

    impl<T: Sized + AsRef<[[f16; 4]]> + AsMut<[[f16; 4]]>> BitmapDataRgbaF16x4 for T

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html b/docs/windows_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html index 8967afa5..0fe85651 100644 --- a/docs/windows_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html +++ b/docs/windows_docs/crabgrab/feature/bitmap/trait.VideoFrameBitmap.html @@ -1,8 +1,25 @@ -VideoFrameBitmap in crabgrab::feature::bitmap - Rust -
    pub trait VideoFrameBitmap {
    -    // Required method
    -    fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>;
    +VideoFrameBitmap in crabgrab::feature::bitmap - Rust
    +    
    pub trait VideoFrameBitmap {
    +    // Required methods
    +    fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>;
    +    fn try_get_pooled_bitmap(
    +        &self,
    +        bitmap_pool: &FrameBitmapPool
    +    ) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>;
    +    fn get_pooled_bitmap(
    +        &self,
    +        bitmap_pool: &FrameBitmapPool
    +    ) -> Result<PooledFrameBitmap, VideoFrameBitmapError>;
     }
    Expand description

    A video frame which can produce a bitmap

    -

    Required Methods§

    source

    fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, +

    Required Methods§

    source

    fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, and is an expensive operation.

    -

    Implementors§

    \ No newline at end of file +
    source

    fn try_get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>

    Try and get a pooled bitmap using the given bitmap pool, and return Ok(None) if there are no pooled bitmaps available +and max pooled bitmaps exist

    +
    source

    fn get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<PooledFrameBitmap, VideoFrameBitmapError>

    Get a pooled bitmap, waiting for one to become available if max pooled bitmaps are checked out

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/type.BoxedSliceFrameBitmap.html b/docs/windows_docs/crabgrab/feature/bitmap/type.BoxedSliceFrameBitmap.html new file mode 100644 index 00000000..cf5e224b --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/type.BoxedSliceFrameBitmap.html @@ -0,0 +1,8 @@ +BoxedSliceFrameBitmap in crabgrab::feature::bitmap - Rust +
    pub type BoxedSliceFrameBitmap = FrameBitmap<Box<[[u8; 4]]>, Box<[u32]>, Box<[[f16; 4]]>, Box<[u8]>, Box<[[u8; 2]]>>;
    Expand description

    A Bitmap with boxed-slice image data

    +

    Aliased Type§

    enum BoxedSliceFrameBitmap {
    +    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<Box<[[u8; 4]]>>),
    +    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<Box<[u32]>>),
    +    RgbaF16x4(FrameBitmapRgbaF16x4<Box<[[f16; 4]]>>),
    +    YCbCr(FrameBitmapYCbCr<Box<[u8]>, Box<[[u8; 2]]>>),
    +}

    Variants§

    §

    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<Box<[[u8; 4]]>>)

    §

    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<Box<[u32]>>)

    §

    RgbaF16x4(FrameBitmapRgbaF16x4<Box<[[f16; 4]]>>)

    §

    YCbCr(FrameBitmapYCbCr<Box<[u8]>, Box<[[u8; 2]]>>)

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/bitmap/type.PooledFrameBitmap.html b/docs/windows_docs/crabgrab/feature/bitmap/type.PooledFrameBitmap.html new file mode 100644 index 00000000..ff90b2f4 --- /dev/null +++ b/docs/windows_docs/crabgrab/feature/bitmap/type.PooledFrameBitmap.html @@ -0,0 +1,8 @@ +PooledFrameBitmap in crabgrab::feature::bitmap - Rust +
    pub type PooledFrameBitmap = FrameBitmap<PooledBitmap<[u8; 4]>, PooledBitmap<u32>, PooledBitmap<[f16; 4]>, PooledBitmap<u8>, PooledBitmap<[u8; 2]>>;
    Expand description

    A bitmap with booled images as bitmap data

    +

    Aliased Type§

    enum PooledFrameBitmap {
    +    BgraUnorm8x4(FrameBitmapBgraUnorm8x4<PooledBitmap<[u8; 4]>>),
    +    ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<PooledBitmap<u32>>),
    +    RgbaF16x4(FrameBitmapRgbaF16x4<PooledBitmap<[f16; 4]>>),
    +    YCbCr(FrameBitmapYCbCr<PooledBitmap<u8>, PooledBitmap<[u8; 2]>>),
    +}

    Variants§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/dx11/enum.WindowsDx11VideoFrameError.html b/docs/windows_docs/crabgrab/feature/dx11/enum.WindowsDx11VideoFrameError.html index c0d1ec33..e3e122a9 100644 --- a/docs/windows_docs/crabgrab/feature/dx11/enum.WindowsDx11VideoFrameError.html +++ b/docs/windows_docs/crabgrab/feature/dx11/enum.WindowsDx11VideoFrameError.html @@ -1,4 +1,4 @@ -WindowsDx11VideoFrameError in crabgrab::feature::dx11 - Rust +WindowsDx11VideoFrameError in crabgrab::feature::dx11 - Rust
    pub enum WindowsDx11VideoFrameError {
         Other(String),
     }

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for WindowsDx11VideoFrameError

    source§

    fn clone(&self) -> WindowsDx11VideoFrameError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WindowsDx11VideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for WindowsDx11VideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for WindowsDx11VideoFrameError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where diff --git a/docs/windows_docs/crabgrab/feature/dx11/index.html b/docs/windows_docs/crabgrab/feature/dx11/index.html index 52fff255..5fd0a36c 100644 --- a/docs/windows_docs/crabgrab/feature/dx11/index.html +++ b/docs/windows_docs/crabgrab/feature/dx11/index.html @@ -1,4 +1,4 @@ -crabgrab::feature::dx11 - Rust +crabgrab::feature::dx11 - Rust

    Module crabgrab::feature::dx11

    source ·
    Expand description

    Frame -> DX11 Surface/Texture conversion (requires dx11 feature)

    Enums§

    Traits§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11CaptureStream.html b/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11CaptureStream.html index 3d0fc06c..adb6c794 100644 --- a/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11CaptureStream.html +++ b/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11CaptureStream.html @@ -1,4 +1,4 @@ -WindowsDx11CaptureStream in crabgrab::feature::dx11 - Rust +WindowsDx11CaptureStream in crabgrab::feature::dx11 - Rust
    pub trait WindowsDx11CaptureStream {
         // Required method
         fn get_dx11_device(&self) -> ID3D11Device;
    diff --git a/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11VideoFrame.html b/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11VideoFrame.html
    index e706a4f8..3a5bd74d 100644
    --- a/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11VideoFrame.html
    +++ b/docs/windows_docs/crabgrab/feature/dx11/trait.WindowsDx11VideoFrame.html
    @@ -1,4 +1,4 @@
    -WindowsDx11VideoFrame in crabgrab::feature::dx11 - Rust
    +WindowsDx11VideoFrame in crabgrab::feature::dx11 - Rust
         
    pub trait WindowsDx11VideoFrame {
         // Required methods
         fn get_dx11_surface(
    diff --git a/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiCaptureStreamError.html b/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiCaptureStreamError.html
    index d76a22ae..f204b412 100644
    --- a/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiCaptureStreamError.html
    +++ b/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiCaptureStreamError.html
    @@ -1,7 +1,7 @@
    -WindowsDxgiCaptureStreamError in crabgrab::feature::dxgi - Rust
    +WindowsDxgiCaptureStreamError in crabgrab::feature::dxgi - Rust
         
    pub enum WindowsDxgiCaptureStreamError {
         NoAdapter(String),
    -}

    Variants§

    §

    NoAdapter(String)

    Trait Implementations§

    source§

    impl Debug for WindowsDxgiCaptureStreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for WindowsDxgiCaptureStreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for WindowsDxgiCaptureStreamError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where +}

    Variants§

    §

    NoAdapter(String)

    Trait Implementations§

    source§

    impl Debug for WindowsDxgiCaptureStreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for WindowsDxgiCaptureStreamError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for WindowsDxgiCaptureStreamError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where T: 'static + ?Sized,

    source§

    fn type_id(&self) -> TypeId

    Gets the TypeId of self. Read more
    source§

    impl<T> Borrow<T> for T
    where T: ?Sized,

    source§

    fn borrow(&self) -> &T

    Immutably borrows from an owned value. Read more
    source§

    impl<T> BorrowMut<T> for T
    where T: ?Sized,

    source§

    fn borrow_mut(&mut self) -> &mut T

    Mutably borrows from an owned value. Read more
    source§

    impl<T> From<T> for T

    source§

    fn from(t: T) -> T

    Returns the argument unchanged.

    diff --git a/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiVideoFrameError.html b/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiVideoFrameError.html index b588a2e2..7a6eec19 100644 --- a/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiVideoFrameError.html +++ b/docs/windows_docs/crabgrab/feature/dxgi/enum.WindowsDxgiVideoFrameError.html @@ -1,4 +1,4 @@ -WindowsDxgiVideoFrameError in crabgrab::feature::dxgi - Rust +WindowsDxgiVideoFrameError in crabgrab::feature::dxgi - Rust
    pub enum WindowsDxgiVideoFrameError {
         Other(String),
     }

    Variants§

    §

    Other(String)

    Trait Implementations§

    source§

    impl Clone for WindowsDxgiVideoFrameError

    source§

    fn clone(&self) -> WindowsDxgiVideoFrameError

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl Debug for WindowsDxgiVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Display for WindowsDxgiVideoFrameError

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl Error for WindowsDxgiVideoFrameError

    source§

    fn source(&self) -> Option<&(dyn Error + 'static)>

    The lower-level source of this error, if any. Read more
    source§

    fn description(&self) -> &str

    👎Deprecated since 1.42.0: use the Display impl or to_string()
    source§

    fn cause(&self) -> Option<&dyn Error>

    👎Deprecated since 1.33.0: replaced by Error::source, which can support downcasting
    source§

    fn provide<'a>(&'a self, request: &mut Request<'a>)

    🔬This is a nightly-only experimental API. (error_generic_member_access)
    Provides type based access to context intended for error reports. Read more

    Auto Trait Implementations§

    Blanket Implementations§

    source§

    impl<T> Any for T
    where diff --git a/docs/windows_docs/crabgrab/feature/dxgi/index.html b/docs/windows_docs/crabgrab/feature/dxgi/index.html index 94ec1fed..7c7ae23a 100644 --- a/docs/windows_docs/crabgrab/feature/dxgi/index.html +++ b/docs/windows_docs/crabgrab/feature/dxgi/index.html @@ -1,4 +1,4 @@ -crabgrab::feature::dxgi - Rust +crabgrab::feature::dxgi - Rust

    Module crabgrab::feature::dxgi

    source ·
    Expand description

    Frame -> DXGI Surface conversion (requires dxgi feature)

    Enums§

    Traits§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiCaptureStream.html b/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiCaptureStream.html index 785a422e..a3e136a3 100644 --- a/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiCaptureStream.html +++ b/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiCaptureStream.html @@ -1,4 +1,4 @@ -WindowsDxgiCaptureStream in crabgrab::feature::dxgi - Rust +WindowsDxgiCaptureStream in crabgrab::feature::dxgi - Rust
    pub trait WindowsDxgiCaptureStream {
         // Required methods
         fn get_dxgi_adapter(
    diff --git a/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiVideoFrame.html b/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiVideoFrame.html
    index 3f8428a1..91f9aa64 100644
    --- a/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiVideoFrame.html
    +++ b/docs/windows_docs/crabgrab/feature/dxgi/trait.WindowsDxgiVideoFrame.html
    @@ -1,4 +1,4 @@
    -WindowsDxgiVideoFrame in crabgrab::feature::dxgi - Rust
    +WindowsDxgiVideoFrame in crabgrab::feature::dxgi - Rust
         
    pub trait WindowsDxgiVideoFrame {
         // Required method
         fn get_dxgi_surface(
    diff --git a/docs/windows_docs/crabgrab/feature/index.html b/docs/windows_docs/crabgrab/feature/index.html
    index 54abc34b..7801151c 100644
    --- a/docs/windows_docs/crabgrab/feature/index.html
    +++ b/docs/windows_docs/crabgrab/feature/index.html
    @@ -1,4 +1,4 @@
    -crabgrab::feature - Rust
    +crabgrab::feature - Rust
         

    Module crabgrab::feature

    source ·
    Expand description

    Extension features

    Modules§

    Required Methods§

    source

    fn get_wgpu_device_wrapper( &self ) -> Option<Arc<dyn AsRef<Device> + Send + Sync + 'static>>

    Gets the Wgpu device wrapper supplied to CaptureConfig::with_wgpu_device(..)

    -
    source

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)

    -

    Implementors§

    \ No newline at end of file +
    source

    fn get_wgpu_device(&self) -> Option<&Device>

    Gets the Wgpu device referenced by device wrapper supplied to CaptureConfig::with_wgpu_device(..)

    +

    Implementors§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html b/docs/windows_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html index b850ab86..9c8a872b 100644 --- a/docs/windows_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html +++ b/docs/windows_docs/crabgrab/feature/wgpu/trait.WgpuVideoFrameExt.html @@ -1,5 +1,5 @@ -WgpuVideoFrameExt in crabgrab::feature::wgpu - Rust -
    pub trait WgpuVideoFrameExt {
    +WgpuVideoFrameExt in crabgrab::feature::wgpu - Rust
    +    
    pub trait WgpuVideoFrameExt {
         // Required method
         fn get_wgpu_texture(
             &self,
    @@ -7,9 +7,9 @@
             label: Option<&'static str>
         ) -> Result<Texture, WgpuVideoFrameError>;
     }
    Expand description

    A video frame which can be used to create Wgpu textures

    -

    Required Methods§

    Required Methods§

    source

    fn get_wgpu_texture( &self, plane: WgpuVideoFramePlaneTexture, label: Option<&'static str> ) -> Result<Texture, WgpuVideoFrameError>

    Get the texture for the given plane of the video frame

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/frame/enum.AudioBufferError.html b/docs/windows_docs/crabgrab/frame/enum.AudioBufferError.html index 86f434ac..e1fe8ae9 100644 --- a/docs/windows_docs/crabgrab/frame/enum.AudioBufferError.html +++ b/docs/windows_docs/crabgrab/frame/enum.AudioBufferError.html @@ -1,4 +1,4 @@ -AudioBufferError in crabgrab::frame - Rust +AudioBufferError in crabgrab::frame - Rust
    pub enum AudioBufferError {
         UnsupportedFormat,
         InvalidChannel,
    diff --git a/docs/windows_docs/crabgrab/frame/enum.AudioChannelCount.html b/docs/windows_docs/crabgrab/frame/enum.AudioChannelCount.html
    index 33e9f593..50c9d93c 100644
    --- a/docs/windows_docs/crabgrab/frame/enum.AudioChannelCount.html
    +++ b/docs/windows_docs/crabgrab/frame/enum.AudioChannelCount.html
    @@ -1,4 +1,4 @@
    -AudioChannelCount in crabgrab::frame - Rust
    +AudioChannelCount in crabgrab::frame - Rust
         
    pub enum AudioChannelCount {
         Mono,
         Stereo,
    diff --git a/docs/windows_docs/crabgrab/frame/enum.AudioChannelData.html b/docs/windows_docs/crabgrab/frame/enum.AudioChannelData.html
    index 86b464e7..3c5c5a28 100644
    --- a/docs/windows_docs/crabgrab/frame/enum.AudioChannelData.html
    +++ b/docs/windows_docs/crabgrab/frame/enum.AudioChannelData.html
    @@ -1,4 +1,4 @@
    -AudioChannelData in crabgrab::frame - Rust
    +AudioChannelData in crabgrab::frame - Rust
         
    pub enum AudioChannelData<'data> {
         F32(AudioChannelDataSamples<'data, f32>),
         I32(AudioChannelDataSamples<'data, i32>),
    diff --git a/docs/windows_docs/crabgrab/frame/enum.AudioSampleRate.html b/docs/windows_docs/crabgrab/frame/enum.AudioSampleRate.html
    index 69724834..65bbf2ee 100644
    --- a/docs/windows_docs/crabgrab/frame/enum.AudioSampleRate.html
    +++ b/docs/windows_docs/crabgrab/frame/enum.AudioSampleRate.html
    @@ -1,4 +1,4 @@
    -AudioSampleRate in crabgrab::frame - Rust
    +AudioSampleRate in crabgrab::frame - Rust
         
    pub enum AudioSampleRate {
         Hz8000,
         Hz16000,
    diff --git a/docs/windows_docs/crabgrab/frame/index.html b/docs/windows_docs/crabgrab/frame/index.html
    index b828137a..eb65f982 100644
    --- a/docs/windows_docs/crabgrab/frame/index.html
    +++ b/docs/windows_docs/crabgrab/frame/index.html
    @@ -1,3 +1,3 @@
    -crabgrab::frame - Rust
    +crabgrab::frame - Rust
         

    Module crabgrab::frame

    source ·
    Expand description

    Audio and video frames

    Structs§

    Enums§

    \ No newline at end of file diff --git a/docs/windows_docs/crabgrab/frame/struct.AudioChannelDataSamples.html b/docs/windows_docs/crabgrab/frame/struct.AudioChannelDataSamples.html index 9260cabc..8ef91a93 100644 --- a/docs/windows_docs/crabgrab/frame/struct.AudioChannelDataSamples.html +++ b/docs/windows_docs/crabgrab/frame/struct.AudioChannelDataSamples.html @@ -1,4 +1,4 @@ -AudioChannelDataSamples in crabgrab::frame - Rust +AudioChannelDataSamples in crabgrab::frame - Rust
    pub struct AudioChannelDataSamples<'data, T> { /* private fields */ }
    Expand description

    Wraps a “slice” of audio data for one channel, handling data stride

    Implementations§

    source§

    impl<T: Copy> AudioChannelDataSamples<'_, T>

    source

    pub fn get(&self, n: usize) -> T

    Get the nth sample for this channel data

    source

    pub fn length(&self) -> usize

    Get the length of this sample buffer

    diff --git a/docs/windows_docs/crabgrab/frame/struct.AudioFrame.html b/docs/windows_docs/crabgrab/frame/struct.AudioFrame.html index eed1d757..2a924568 100644 --- a/docs/windows_docs/crabgrab/frame/struct.AudioFrame.html +++ b/docs/windows_docs/crabgrab/frame/struct.AudioFrame.html @@ -1,4 +1,4 @@ -AudioFrame in crabgrab::frame - Rust +AudioFrame in crabgrab::frame - Rust

    Struct crabgrab::frame::AudioFrame

    source ·
    pub struct AudioFrame { /* private fields */ }
    Expand description

    A frame of captured audio

    Implementations§

    source§

    impl AudioFrame

    source

    pub fn sample_rate(&self) -> AudioSampleRate

    Get the sample rate of the captured audio

    source

    pub fn channel_count(&self) -> AudioChannelCount

    Get the channel count of the captured audio

    diff --git a/docs/windows_docs/crabgrab/frame/struct.VideoFrame.html b/docs/windows_docs/crabgrab/frame/struct.VideoFrame.html index 6ce75620..e712baf1 100644 --- a/docs/windows_docs/crabgrab/frame/struct.VideoFrame.html +++ b/docs/windows_docs/crabgrab/frame/struct.VideoFrame.html @@ -1,4 +1,4 @@ -VideoFrame in crabgrab::frame - Rust +VideoFrame in crabgrab::frame - Rust

    Struct crabgrab::frame::VideoFrame

    source ·
    pub struct VideoFrame { /* private fields */ }
    Expand description

    A frame of captured video

    Implementations§

    source§

    impl VideoFrame

    source

    pub fn frame_id(&self) -> u64

    Get the sequence id of this video frame (monotonically increasing)

    Note: This is separate from audio frame ids

    @@ -8,8 +8,15 @@

    For planar image formats, this is the size of the largest plane

    source

    pub fn dpi(&self) -> f64

    Get the dpi of the contents of the frame (accounting for capture scaling)

    source

    pub fn content_rect(&self) -> Rect

    Get the rectangle of the frame representing containing the captured contents

    -

    Trait Implementations§

    source§

    impl Debug for VideoFrame

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl VideoFrameBitmap for VideoFrame

    source§

    fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, -and is an expensive operation.
    source§

    impl WgpuVideoFrameExt for VideoFrame

    Trait Implementations§

    source§

    impl Debug for VideoFrame

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl VideoFrameBitmap for VideoFrame

    source§

    fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>

    Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, +and is an expensive operation.
    source§

    fn get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<PooledFrameBitmap, VideoFrameBitmapError>

    Get a pooled bitmap, waiting for one to become available if max pooled bitmaps are checked out
    source§

    fn try_get_pooled_bitmap( + &self, + bitmap_pool: &FrameBitmapPool +) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>

    Try and get a pooled bitmap using the given bitmap pool, and return Ok(None) if there are no pooled bitmaps available +and max pooled bitmaps exist
    source§

    impl WgpuVideoFrameExt for VideoFrame

    source§

    fn get_wgpu_texture( &self, plane: WgpuVideoFramePlaneTexture, label: Option<&'static str> diff --git a/docs/windows_docs/crabgrab/index.html b/docs/windows_docs/crabgrab/index.html index 8b57cb3c..4c851298 100644 --- a/docs/windows_docs/crabgrab/index.html +++ b/docs/windows_docs/crabgrab/index.html @@ -1,4 +1,4 @@ -crabgrab - Rust 277 278 279 +280 +281 +282 +283 +284 +285 +286 +287 +288 +289 +290 +291 +292 +293 +294 +295 +296 +297 +298 +299 +300 +301 +302 +303 +304 +305 +306 +307 +308 +309 +310 +311 +312 +313 +314 +315 +316 +317 +318 +319 +320 +321 +322 +323 +324 +325 +326 +327 +328 +329 +330 +331 +332 +333 +334 +335 +336 +337 +338 +339 +340 +341 +342 +343 +344 +345 +346 +347 +348 +349 +350 +351 +352 +353 +354 +355 +356 +357 +358 +359 +360 +361 +362 +363 +364 +365 +366 +367 +368 +369 +370 +371 +372 +373 +374 +375 +376 +377 +378 +379 +380 +381 +382 +383 +384 +385 +386 +387 +388 +389 +390 +391 +392 +393 +394 +395 +396 +397 +398 +399 +400 +401 +402 +403 +404 +405 +406 +407 +408 +409 +410 +411 +412 +413 +414 +415 +416 +417 +418 +419 +420 +421 +422 +423 +424 +425 +426 +427 +428 +429 +430 +431 +432 +433 +434 +435 +436 +437 +438 +439 +440 +441 +442 +443 +444 +445 +446 +447 +448 +449 +450 +451 +452 +453 +454 +455 +456 +457 +458 +459 +460 +461 +462 +463 +464 +465 +466 +467 +468 +469 +470 +471 +472 +473 +474 +475 +476 +477 +478 +479 +480 +481 +482 +483 +484 +485 +486 +487 +488 +489 +490 +491 +492 +493 +494 +495 +496 +497 +498 +499 +500 +501 +502 +503 +504 +505 +506 +507 +508 +509 +510 +511 +512 +513 +514 +515 +516 +517 +518 +519 +520 +521 +522 +523 +524 +525 +526 +527 +528 +529 +530 +531 +532 +533 +534 +535 +536 +537 +538 +539 +540 +541 +542 +543 +544 +545 +546 +547 +548 +549 +550 +551 +552 +553 +554 +555 +556 +557 +558 +559 +560 +561 +562 +563 +564 +565 +566 +567 +568 +569 +570 +571 +572 +573 +574 +575 +576 +577 +578 +579 +580 +581 +582 +583 +584 +585 +586 +587 +588 +589 +590 +591 +592 +593 +594 +595 +596 +597 +598 +599 +600 +601 +602 +603 +604 +605 +606 +607 +608 +609 +610 +611 +612 +613 +614 +615 +616 +617 +618 +619 +620 +621 +622 +623 +624 +625 +626 +627 +628 +629 +630 +631 +632 +633 +634 +635 +636 +637 +638 +639 +640 +641 +642 +643 +644 +645 +646 +647 +648 +649 +650 +651 +652 +653 +654 +655 +656 +657 +658 +659 +660 +661 +662 +663 +664 +665 +666 +667 +668 +669 +670 +671 +672 +673 +674 +675 +676 +677 +678 +679 +680 +681 +682 +683 +684 +685 +686 +687 +688 +689 +690 +691 +692 +693 +694 +695 +696 +697 +698 +699 +700 +701 +702 +703 +704 +705 +706 +707 +708 +709 +710 +711 +712 +713 +714 +715 +716 +717 +718 +719 +720 +721 +722 +723 +724 +725 +726 +727 +728 +729 +730 +731 +732 +733 +734 +735

    #![cfg(feature = "bitmap")]
     
     use std::error::Error;
     use std::fmt::Display;
    +use std::os::raw::c_void;
    +use bytemuck::Pod;
    +use bytemuck::Zeroable;
    +use parking_lot::Mutex;
    +use parking_lot::Condvar;
    +use std::sync::Arc;
     
     use half::f16;
     
    +use crate::prelude::CapturePixelFormat;
     use crate::prelude::VideoFrame;
    +
     #[cfg(target_os = "macos")]
     use crate::platform::macos::frame::MacosVideoFrame;
     #[cfg(target_os = "macos")]
    @@ -309,23 +773,148 @@ 

    Files

    #[cfg(target_os = "windows")] use windows::Win32::Graphics::Direct3D11::D3D11_USAGE_DYNAMIC; +#[derive(Clone)] +struct BitmapPool<T: Sized + Zeroable + Copy> { + free_bitmaps_and_count: Arc<Mutex<(Vec<Box<[T]>>, usize)>>, + free_condition: Arc<Condvar>, + max: usize, +} + +impl<T: Sized + Zeroable + Copy> BitmapPool<T> { + pub fn new(initial_count: usize, max: usize, initial_resolution: (usize, usize)) -> Arc<Self> { + let mut free_bitmaps = Vec::new(); + for _ in 0..initial_count { + free_bitmaps.push( + vec![T::zeroed(); initial_resolution.0 * initial_resolution.1].into_boxed_slice() + ) + } + Arc::new(Self { + free_bitmaps_and_count: Arc::new(Mutex::new((free_bitmaps, initial_count))), + free_condition: Arc::new(Condvar::new()), + max, + }) + } + + fn make_new_bitmap(self: &Arc<Self>, resolution: (usize, usize)) -> Option<PooledBitmap<T>> { + Some(PooledBitmap { + data: PooledBitmapData { + data: Some(vec![T::zeroed(); resolution.0 * resolution.1].into_boxed_slice()), + pool: self.clone() + }, + width: resolution.0, + height: resolution.1 + }) + } + + pub fn try_get_bitmap(self: &Arc<Self>, resolution: (usize, usize)) -> Option<PooledBitmap<T>> { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + self.try_get_bitmap_internal(resolution, &mut free_bitmaps_and_count) + } + + pub fn get_bitmap(self: &Arc<Self>, resolution: (usize, usize)) -> PooledBitmap<T> { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + loop { + if let Some(pooled_bitmap) = self.try_get_bitmap_internal(resolution, &mut free_bitmaps_and_count) { + return pooled_bitmap; + } else { + self.free_condition.wait(&mut free_bitmaps_and_count); + } + } + } + + fn try_get_bitmap_internal(self: &Arc<Self>, resolution: (usize, usize), free_bitmaps_and_count: &mut (Vec<Box<[T]>>, usize)) -> Option<PooledBitmap<T>> { + if let Some(bitmap_data) = free_bitmaps_and_count.0.pop() { + if bitmap_data.len() <= resolution.0 * resolution.1 { + return Some( + PooledBitmap { + data: PooledBitmapData { + data: Some(bitmap_data), + pool: self.clone() + }, + width: resolution.0, + height: resolution.1 + } + ); + } + free_bitmaps_and_count.1 -= 1; + } + if free_bitmaps_and_count.1 < self.max { + return self.make_new_bitmap(resolution); + } + None + } + + pub fn free_pooled(&self) { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + let count = free_bitmaps_and_count.0.len(); + free_bitmaps_and_count.0.clear(); + free_bitmaps_and_count.1 -= count; + } +} + +struct PooledBitmapData<T: Sized + Zeroable + Copy> { + pub data: Option<Box<[T]>>, + pub pool: Arc<BitmapPool<T>>, +} + +impl<T: Sized + Zeroable + Copy> Drop for PooledBitmapData<T> { + fn drop(&mut self) { + if let Some(data) = self.data.take() { + let mut free_bitmaps_and_count = self.pool.free_bitmaps_and_count.lock(); + free_bitmaps_and_count.0.push(data); + self.pool.free_condition.notify_all(); + } + } +} + +/// A pooled bitmap, belinging to it's creator BitmapPool. When this bitmap is dropped, it will be returned to it's pool. +pub struct PooledBitmap<T: Sized + Copy + Zeroable> { + data: PooledBitmapData<T>, + pub width: usize, + pub height: usize, +} + +impl<T: Sized + Zeroable + Copy> AsRef<[T]> for PooledBitmap<T> { + fn as_ref(&self) -> &[T] { + &self.data.data.as_ref().unwrap()[..] + } +} + +impl<T: Sized + Zeroable + Copy> AsMut<[T]> for PooledBitmap<T> { + fn as_mut(&mut self) -> &mut [T] { + &mut self.data.data.as_mut().unwrap()[..] + } +} + +/// Bitmap data in the Bgra8888 format +pub trait BitmapDataBgra8x4: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]> {} +impl<T: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]>> BitmapDataBgra8x4 for T {} + /// A Bgra8888 format bitmap -pub struct FrameBitmapBgraUnorm8x4 { - pub data: Box<[[u8; 4]]>, +pub struct FrameBitmapBgraUnorm8x4<Data: BitmapDataBgra8x4> { + pub data: Data, pub width: usize, pub height: usize, } +/// Bitmap data in the Argb2101010 format +pub trait BitmapDataArgbUnormPacked2101010: Sized + AsRef<[u32]> {} +impl<T: Sized + AsRef<[u32]> + AsMut<[u32]>> BitmapDataArgbUnormPacked2101010 for T {} + /// A Rgba1010102 format bitmap -pub struct FrameBitmapRgbaUnormPacked1010102 { - pub data: Box<[u32]>, +pub struct FrameBitmapArgbUnormPacked2101010<Data: BitmapDataArgbUnormPacked2101010> { + pub data: Data, pub width: usize, pub height: usize, } +/// Bitmap data in the RgbaF16x4 format +pub trait BitmapDataRgbaF16x4: Sized + AsRef<[[f16; 4]]> {} +impl<T: Sized + AsRef<[[f16; 4]]> + AsMut<[[f16; 4]]>> BitmapDataRgbaF16x4 for T {} + /// A RgbaF16x4 format bitmap -pub struct FrameBitmapRgbaF16x4 { - pub data: Box<[[f16; 4]]>, +pub struct FrameBitmapRgbaF16x4<Data: BitmapDataRgbaF16x4> { + pub data: Data, pub width: usize, pub height: usize, } @@ -338,34 +927,139 @@

    Files

    Full, } +/// Bitmap data in the Luma/u8 format +pub trait BitmapDataLuma: Sized + AsRef<[u8]> {} +impl<T: Sized + AsRef<[u8]> + AsMut<[u8]>> BitmapDataLuma for T {} + +/// Bitmap data in the CbCr Chroma/u8x2 format +pub trait BitmapDataChroma: Sized + AsRef<[[u8; 2]]> {} +impl<T: Sized + AsRef<[[u8; 2]]> + AsMut<[[u8; 2]]>> BitmapDataChroma for T {} + /// A YCbCr image, corresponding to either V420 or F420 pixel formats. /// /// Dual-planar, with luminance (Y) in one plane, and chrominance (CbCr) in another. /// Note that each plane may have a different size, as with V420 format, where /// the chroma plane is 2 by 2 blocks, but luma is per-pixel -pub struct FrameBitmapYCbCr { - pub luma_data: Box<[u8]>, +pub struct FrameBitmapYCbCr<LumaData: BitmapDataLuma, ChromaData: BitmapDataChroma> { + pub luma_data: LumaData, pub luma_width: usize, pub luma_height: usize, - pub chroma_data: Box<[[u8; 2]]>, + pub chroma_data: ChromaData, pub chroma_width: usize, pub chroma_height: usize, pub range: VideoRange, } /// A bitmap image of the selected format -pub enum FrameBitmap { - BgraUnorm8x4(FrameBitmapBgraUnorm8x4), - RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102), - RgbaF16x4(FrameBitmapRgbaF16x4), - YCbCr(FrameBitmapYCbCr), +pub enum FrameBitmap<DataBgra: BitmapDataBgra8x4, DataArgbPacked: BitmapDataArgbUnormPacked2101010, DataRgbaF16: BitmapDataRgbaF16x4, DataLuma: BitmapDataLuma, DataChroma: BitmapDataChroma> { + BgraUnorm8x4(FrameBitmapBgraUnorm8x4<DataBgra>), + ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010<DataArgbPacked>), + RgbaF16x4(FrameBitmapRgbaF16x4<DataRgbaF16>), + YCbCr(FrameBitmapYCbCr<DataLuma, DataChroma>), +} + +/// A Bitmap with boxed-slice image data +pub type BoxedSliceFrameBitmap = FrameBitmap< + // Bgra8888 + Box<[[u8; 4]]>, + // ArgbPacked2101010 + Box<[u32]>, + // RgbaF16x4 + Box<[[f16; 4]]>, + // Luma + Box<[u8]>, + // Chroma + Box<[[u8; 2]]> +>; + +/// A bitmap with booled images as bitmap data +pub type PooledFrameBitmap = FrameBitmap< + // Bgra8888 + PooledBitmap<[u8; 4]>, + // ArgbPacked2101010 + PooledBitmap<u32>, + // RgbaF16x4 + PooledBitmap<[f16; 4]>, + // Luma + PooledBitmap<u8>, + // Chroma + PooledBitmap<[u8; 2]>, +>; + +/// A pool of frame bitmaps +pub struct FrameBitmapPool { + bgra_u8x4: Arc<BitmapPool<[u8; 4]>>, + argb_packed_2101010: Arc<BitmapPool<u32>>, + rgba_f16x4: Arc<BitmapPool<[f16; 4]>>, + luma: Arc<BitmapPool<u8>>, + chroma: Arc<BitmapPool<[u8; 2]>>, +} + +impl FrameBitmapPool { + /// Create a new bitmap pool with an initial `capacity` and `resolution` for the given `format`, limited to `max` pooled bitmaps + pub fn new_with_initial_capacity(capacity: usize, initial_resolution: (usize, usize), max: usize, format: CapturePixelFormat) -> Self { + Self { + bgra_u8x4: BitmapPool::new( + if format == CapturePixelFormat::Bgra8888 { capacity } else { 0 }, + max, + initial_resolution + ), + argb_packed_2101010: BitmapPool::new( + if format == CapturePixelFormat::Argb2101010 { capacity } else { 0 }, + max, + initial_resolution + ), + rgba_f16x4: BitmapPool::new( + 0, + max, + initial_resolution + ), + luma: BitmapPool::new( + if format == CapturePixelFormat::F420 || format == CapturePixelFormat::V420 { capacity } else { 0 }, + max, + initial_resolution + ), + chroma: BitmapPool::new( + if format == CapturePixelFormat::F420 || format == CapturePixelFormat::V420 { capacity } else { 0 }, + max, + initial_resolution + ) + } + } + + /// Create a new frame bitmap pool, limited to `max` pooled bitmaps + pub fn new(max: usize) -> Self { + Self { + bgra_u8x4: BitmapPool::new(0, max, (0, 0)), + argb_packed_2101010: BitmapPool::new(0, max, (0, 0)), + rgba_f16x4: BitmapPool::new(0, max, (0, 0)), + luma: BitmapPool::new(0, max, (0, 0)), + chroma: BitmapPool::new(0, max, (0, 0)), + } + } + + /// Free all pooled bitmaps - this happens automatically on `drop()`, but you can free them ahead of time if you need to. + pub fn free_pooled(&self) { + self.bgra_u8x4.free_pooled(); + self.argb_packed_2101010.free_pooled(); + self.rgba_f16x4.free_pooled(); + self.luma.free_pooled(); + self.chroma.free_pooled(); + } } /// A video frame which can produce a bitmap pub trait VideoFrameBitmap { /// Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, /// and is an expensive operation. - fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError>; + fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError>; + + /// Try and get a pooled bitmap using the given bitmap pool, and return Ok(None) if there are no pooled bitmaps available + /// and `max` pooled bitmaps exist + fn try_get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError>; + + /// Get a pooled bitmap, waiting for one to become available if `max` pooled bitmaps are checked out + fn get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<PooledFrameBitmap, VideoFrameBitmapError>; } #[derive(Clone, Debug)] @@ -396,8 +1090,28 @@

    Files

    } } -impl VideoFrameBitmap for VideoFrame { - fn get_bitmap(&self) -> Result<FrameBitmap, VideoFrameBitmapError> { +#[derive(Copy, Clone)] +struct VideoFramePlanePtr { + ptr: *const c_void, + width: usize, + height: usize, + bytes_per_row: usize, +} + +enum VideoFrameDataCopyPtrs { + Bgra8888(VideoFramePlanePtr), + ArgbPacked2101010(VideoFramePlanePtr), + RgbaF16x4(VideoFramePlanePtr), + F420{luma: VideoFramePlanePtr, chroma: VideoFramePlanePtr}, + V420{luma: VideoFramePlanePtr, chroma: VideoFramePlanePtr}, +} + +trait VideoFrameBitmapInternal { + fn get_bitmap_internal<T>(&self, output_mapping: &impl Fn(VideoFrameDataCopyPtrs) -> Result<T, VideoFrameBitmapError>) -> Result<T, VideoFrameBitmapError>; +} + +impl VideoFrameBitmapInternal for VideoFrame { + fn get_bitmap_internal<T>(&self, output_mapping: &impl Fn(VideoFrameDataCopyPtrs) -> Result<T, VideoFrameBitmapError>) -> Result<T, VideoFrameBitmapError> { #[cfg(target_os = "windows")] { let (width, height) = self.impl_video_frame.frame_size; @@ -440,34 +1154,36 @@

    Files

    map_result.map_err(|_| VideoFrameBitmapError::Other("Couldn't map staging texture".to_string()))?; match pixel_format { DirectXPixelFormat::B8G8R8A8UIntNormalized => { - let mut image_data = vec![[0u8; 4]; width * height]; let bpr = mapped_resource.RowPitch as usize; - let surface_slice = std::slice::from_raw_parts(mapped_resource.pData as *const u8, bpr * height); - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, [u8; 4]>(&surface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - let _ = device.Unmap(&staging_texture, 0); - Ok(FrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: mapped_resource.pData as *const c_void, width, height, - })) + bytes_per_row: bpr + }; + + let mapping_result = output_mapping(VideoFrameDataCopyPtrs::Bgra8888(plane_ptr)); + + let _ = device.Unmap(&staging_texture, 0); + + mapping_result }, DirectXPixelFormat::R10G10B10A2UIntNormalized => { - let mut image_data = vec![0u32; width * height]; let bpr = mapped_resource.RowPitch as usize; - let surface_slice = std::slice::from_raw_parts(mapped_resource.pData as *const u8, bpr * height); - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, u32>(&surface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - let _ = device.Unmap(&staging_texture, 0); - Ok(FrameBitmap::RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: mapped_resource.pData as *const c_void, width, height, - })) + bytes_per_row: bpr + }; + + let mapping_result = output_mapping(VideoFrameDataCopyPtrs::ArgbPacked2101010(plane_ptr)); + + let _ = device.Unmap(&staging_texture, 0); + + mapping_result }, _ => { Err(VideoFrameBitmapError::Other("Unknown or unsupported pixel format on DXGISurface".to_string())) @@ -497,18 +1213,16 @@

    Files

    let bpr = iosurface.get_bytes_per_row(); let height = iosurface.get_height(); let width = iosurface.get_width(); - let mut image_data = vec![[0; 4]; width * height]; let base_address = lock_gaurd.get_base_address().ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let iosurface_slice = unsafe { std::slice::from_raw_parts(base_address as *const u8, bpr * height) }; - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, [u8; 4]>(&iosurface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - Ok(FrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: base_address, width, height, - })) + bytes_per_row: bpr + }; + + output_mapping(VideoFrameDataCopyPtrs::Bgra8888(plane_ptr)) }, Some(CVPixelFormat::V420) | Some(CVPixelFormat::F420) => { @@ -516,37 +1230,32 @@

    Files

    let luma_bpr = iosurface.get_bytes_per_row_of_plane(0); let luma_height = iosurface.get_height_of_plane(0); let luma_width = iosurface.get_width_of_plane(0); - - let mut luma_image_data = vec![0u8; luma_width * luma_height]; let luma_base_address = lock_gaurd.get_base_address_of_plane(0).ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let luma_iosurface_slice = unsafe { std::slice::from_raw_parts(luma_base_address as *const u8, luma_bpr * luma_height) }; - for y in 0..luma_height { - let luma_source_slice = &luma_iosurface_slice[(luma_bpr * y)..(luma_bpr * y + luma_width)]; - luma_image_data[(luma_width * y)..(luma_width * y + luma_width)].copy_from_slice(luma_source_slice); - } + let luma_plane_ptr = VideoFramePlanePtr { + ptr: luma_base_address, + width: luma_width, + height: luma_height, + bytes_per_row: luma_bpr, + }; let chroma_bpr = iosurface.get_bytes_per_row_of_plane(1); let chroma_height = iosurface.get_height_of_plane(1); let chroma_width = iosurface.get_width_of_plane(1); - let mut chroma_image_data = vec![[0u8; 2]; chroma_width * chroma_height]; let chroma_base_address = lock_gaurd.get_base_address_of_plane(1).ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let chroma_iosurface_slice = unsafe { std::slice::from_raw_parts(chroma_base_address as *const u8, chroma_bpr * chroma_height) }; - for y in 0..chroma_height { - let chroma_source_slice = bytemuck::cast_slice::<_, [u8; 2]>(&chroma_iosurface_slice[(chroma_bpr * y)..(chroma_bpr * y + 2 * chroma_width)]); - chroma_image_data[(chroma_width * y)..(chroma_width * y + chroma_width)].copy_from_slice(chroma_source_slice); - } + let chroma_plane_ptr = VideoFramePlanePtr { + ptr: chroma_base_address, + width: chroma_width, + height: chroma_height, + bytes_per_row: chroma_bpr, + }; - Ok(FrameBitmap::YCbCr(FrameBitmapYCbCr { - luma_data: luma_image_data.into_boxed_slice(), - chroma_data: chroma_image_data.into_boxed_slice(), - luma_width, - luma_height, - chroma_width, - chroma_height, - range: if pixel_format == Some(CVPixelFormat::F420) { VideoRange::Full } else { VideoRange::Video } - })) + if pixel_format == Some(CVPixelFormat::V420) { + output_mapping(VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr }) + } else { + output_mapping(VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr }) + } }, _ => Err(VideoFrameBitmapError::Other("Unknown pixel format on iosurface".to_string())) } @@ -557,5 +1266,208 @@

    Files

    } } +fn copy_boxed_slice_plane<T: Sized + Copy + Pod + Zeroable>(plane_ptr: VideoFramePlanePtr) -> Box<[T]> { + let mut image_data = vec![T::zeroed(); plane_ptr.width * plane_ptr.height]; + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::<T>() * plane_ptr.width)]); + image_data[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + image_data.into_boxed_slice() +} + +fn copy_pooled_plane<T: Sized + Copy + Pod + Zeroable>(plane_ptr: VideoFramePlanePtr, pool: &Arc<BitmapPool<T>>) -> PooledBitmap<T> { + let mut bitmap = pool.get_bitmap((plane_ptr.width, plane_ptr.height)); + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::<T>() * plane_ptr.width)]); + AsMut::as_mut(&mut bitmap)[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + bitmap +} + +fn try_copy_pooled_plane<T: Sized + Copy + Pod + Zeroable>(plane_ptr: VideoFramePlanePtr, pool: &Arc<BitmapPool<T>>) -> Option<PooledBitmap<T>> { + let mut bitmap = pool.try_get_bitmap((plane_ptr.width, plane_ptr.height))?; + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::<T>() * plane_ptr.width)]); + AsMut::as_mut(&mut bitmap)[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + Some(bitmap) +} + +impl VideoFrameBitmap for VideoFrame { + fn get_bitmap(&self) -> Result<BoxedSliceFrameBitmap, VideoFrameBitmapError> { + self.get_bitmap_internal::<BoxedSliceFrameBitmap>(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data: copy_boxed_slice_plane(bgra_plane_ptr), + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data: copy_boxed_slice_plane(argb_plane_ptr), + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(BoxedSliceFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_boxed_slice_plane(luma_plane_ptr), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_boxed_slice_plane(chroma_plane_ptr), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + })) + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(BoxedSliceFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_boxed_slice_plane(luma_plane_ptr), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_boxed_slice_plane(chroma_plane_ptr), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + })) + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data: copy_boxed_slice_plane(rgba_plane_ptr), + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + })) + } + } + }) + } + + fn get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<PooledFrameBitmap, VideoFrameBitmapError> { + self.get_bitmap_internal::<PooledFrameBitmap>(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + Ok(PooledFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data: copy_pooled_plane(bgra_plane_ptr, &bitmap_pool.bgra_u8x4), + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + Ok(PooledFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data: copy_pooled_plane(argb_plane_ptr, &bitmap_pool.argb_packed_2101010), + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + })) + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + })) + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + Ok(PooledFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data: copy_pooled_plane(rgba_plane_ptr, &bitmap_pool.rgba_f16x4), + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + })) + } + } + }) + } + + fn try_get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result<Option<PooledFrameBitmap>, VideoFrameBitmapError> { + self.get_bitmap_internal::<Option<PooledFrameBitmap>>(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(bgra_plane_ptr, &bitmap_pool.bgra_u8x4) { + Ok(Some(PooledFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data, + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(argb_plane_ptr, &bitmap_pool.argb_packed_2101010) { + Ok(Some(PooledFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data, + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + if let (Some(luma_data), Some(chroma_data)) = (try_copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), try_copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma)) { + Ok(Some(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data, + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data, + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + }))) + } else { + Ok(None) + } + + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + if let (Some(luma_data), Some(chroma_data)) = (try_copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), try_copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma)) { + Ok(Some(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data, + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data, + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(rgba_plane_ptr, &bitmap_pool.rgba_f16x4) { + Ok(Some(PooledFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data, + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + }))) + } else { + Ok(None) + } + } + } + }) + } +} +
    \ No newline at end of file diff --git a/docs/windows_docs/src/crabgrab/feature/wgpu/mod.rs.html b/docs/windows_docs/src/crabgrab/feature/wgpu/mod.rs.html index 97d91108..ab697742 100644 --- a/docs/windows_docs/src/crabgrab/feature/wgpu/mod.rs.html +++ b/docs/windows_docs/src/crabgrab/feature/wgpu/mod.rs.html @@ -454,6 +454,11 @@

    Files

    452 453 454 +455 +456 +457 +458 +459

    use std::sync::Arc;
     use std::{error::Error, fmt::Display};
     
    @@ -471,21 +476,26 @@ 

    Files

    use d3d12::ComPtr; #[cfg(target_os = "windows")] use wgpu::hal::Device; -use windows::core::PCWSTR; -use windows::Win32::Foundation::WAIT_OBJECT_0; +#[cfg(target_os = "windows")] +use windows::core::PCWSTR; +#[cfg(target_os = "windows")] +use windows::Win32::Foundation::WAIT_OBJECT_0; #[cfg(target_os = "windows")] use windows::Win32::Foundation::{CloseHandle, GENERIC_ALL}; #[cfg(target_os = "windows")] use windows::Win32::Graphics::Direct3D::{D3D_DRIVER_TYPE_UNKNOWN, D3D_FEATURE_LEVEL_11_0}; #[cfg(target_os = "windows")] use windows::Win32::Graphics::Direct3D11::{D3D11CreateDevice, ID3D11Device5, ID3D11DeviceContext4, ID3D11Fence, D3D11_CREATE_DEVICE_DEBUG, D3D11_SDK_VERSION, D3D11_TEXTURE2D_DESC}; -use windows::Win32::Graphics::Direct3D12::{D3D12_CLEAR_VALUE, D3D12_FENCE_FLAG_NONE, D3D12_FENCE_FLAG_SHARED}; +#[cfg(target_os = "windows")] +use windows::Win32::Graphics::Direct3D12::{D3D12_CLEAR_VALUE, D3D12_FENCE_FLAG_NONE, D3D12_FENCE_FLAG_SHARED}; #[cfg(target_os = "windows")] use windows::Win32::Graphics::Direct3D12::{ID3D12Fence, D3D12_CPU_PAGE_PROPERTY_UNKNOWN, D3D12_HEAP_FLAG_SHARED, D3D12_HEAP_PROPERTIES, D3D12_HEAP_TYPE_DEFAULT, D3D12_MEMORY_POOL_UNKNOWN, D3D12_RESOURCE_DESC, D3D12_RESOURCE_DIMENSION_TEXTURE2D, D3D12_RESOURCE_FLAG_ALLOW_SIMULTANEOUS_ACCESS, D3D12_RESOURCE_FLAG_ALLOW_UNORDERED_ACCESS, D3D12_RESOURCE_STATE_COMMON, D3D12_TEXTURE_LAYOUT_UNKNOWN}; -use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT_B8G8R8A8_TYPELESS; +#[cfg(target_os = "windows")] +use windows::Win32::Graphics::Dxgi::Common::DXGI_FORMAT_B8G8R8A8_TYPELESS; #[cfg(target_os = "windows")] use windows::Win32::Graphics::Dxgi::{CreateDXGIFactory, IDXGIAdapter4, IDXGIFactory5}; -use windows::Win32::System::Threading::{CreateEventA, WaitForSingleObjectEx, CREATE_EVENT, INFINITE, PROCESS_DELETE, PROCESS_SYNCHRONIZE}; +#[cfg(target_os = "windows")] +use windows::Win32::System::Threading::{CreateEventA, WaitForSingleObjectEx, CREATE_EVENT, INFINITE, PROCESS_DELETE, PROCESS_SYNCHRONIZE}; #[cfg(target_os = "windows")] use windows::Win32::System::Threading::{CreateEventExW, THREAD_DELETE, THREAD_SYNCHRONIZE}; diff --git a/docs/windows_docs/trait.impl/core/convert/trait.AsMut.js b/docs/windows_docs/trait.impl/core/convert/trait.AsMut.js new file mode 100644 index 00000000..bc3cd684 --- /dev/null +++ b/docs/windows_docs/trait.impl/core/convert/trait.AsMut.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[["impl<T: Sized + Zeroable + Copy> AsMut<[T]> for PooledBitmap<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/core/convert/trait.AsRef.js b/docs/windows_docs/trait.impl/core/convert/trait.AsRef.js new file mode 100644 index 00000000..880c27a2 --- /dev/null +++ b/docs/windows_docs/trait.impl/core/convert/trait.AsRef.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[["impl<T: Sized + Zeroable + Copy> AsRef<[T]> for PooledBitmap<T>"]] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/core/marker/trait.Freeze.js b/docs/windows_docs/trait.impl/core/marker/trait.Freeze.js index aa5871c7..109fcd61 100644 --- a/docs/windows_docs/trait.impl/core/marker/trait.Freeze.js +++ b/docs/windows_docs/trait.impl/core/marker/trait.Freeze.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Freeze for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Freeze for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Freeze for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Freeze for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Freeze for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Freeze for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Freeze for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Freeze for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Freeze for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Freeze for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Freeze for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Freeze for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Freeze for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Freeze for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Freeze for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Freeze for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Freeze for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Freeze for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Freeze for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Freeze for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Freeze for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Freeze for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Freeze for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Freeze for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Freeze for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Freeze for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Freeze for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Freeze for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Freeze for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Freeze for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Freeze for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Freeze for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Freeze for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Freeze for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Freeze for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Freeze for Point",1,["crabgrab::util::Point"]],["impl Freeze for Rect",1,["crabgrab::util::Rect"]],["impl Freeze for Size",1,["crabgrab::util::Size"]],["impl<'content> Freeze for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Freeze for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Freeze for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Freeze for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl Freeze for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Freeze for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Freeze for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Freeze for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Freeze for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Freeze for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Freeze for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Freeze for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Freeze for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Freeze for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Freeze for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Freeze for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Freeze for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Freeze for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Freeze for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Freeze for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Freeze for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Freeze for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Freeze for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Freeze for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Freeze for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Freeze for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Freeze for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Freeze for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Freeze for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Freeze for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Freeze for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Freeze for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Freeze for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Freeze for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Freeze for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Freeze for Point",1,["crabgrab::util::Point"]],["impl Freeze for Rect",1,["crabgrab::util::Rect"]],["impl Freeze for Size",1,["crabgrab::util::Size"]],["impl<'content> Freeze for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Freeze for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Freeze for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Freeze for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Freeze for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Freeze for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Freeze for FrameBitmapRgbaF16x4<Data>
    where\n Data: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Freeze for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataArgbPacked: Freeze,\n DataBgra: Freeze,\n DataChroma: Freeze,\n DataLuma: Freeze,\n DataRgbaF16: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Freeze for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n ChromaData: Freeze,\n LumaData: Freeze,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Freeze for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/core/marker/trait.Send.js b/docs/windows_docs/trait.impl/core/marker/trait.Send.js index 605ebfa9..7c6ad129 100644 --- a/docs/windows_docs/trait.impl/core/marker/trait.Send.js +++ b/docs/windows_docs/trait.impl/core/marker/trait.Send.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Send for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Send for CaptureConfigError"],["impl Send for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Send for StreamCreateError"],["impl Send for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Send for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Send for StreamStopError"],["impl Send for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Send for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Send for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Send for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Send for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Send for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Send for ScreenshotError"],["impl Send for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Send for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Send for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Send for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Send for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Send for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Send for CapturableContent"],["impl Send for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Send for CapturableDisplay"],["impl Send for CapturableWindow"],["impl Send for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Send for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Send for CaptureAccessToken"],["impl Send for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Send for CaptureStream"],["impl Send for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Send for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Send for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Send for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Send for AudioFrame"],["impl Send for VideoFrame"],["impl Send for Point",1,["crabgrab::util::Point"]],["impl Send for Rect",1,["crabgrab::util::Rect"]],["impl Send for Size",1,["crabgrab::util::Size"]],["impl<'content> Send for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Send for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Send for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Send for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl Send for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Send for CaptureConfigError"],["impl Send for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Send for StreamCreateError"],["impl Send for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Send for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Send for StreamStopError"],["impl Send for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Send for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Send for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Send for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Send for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Send for ScreenshotError"],["impl Send for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Send for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Send for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Send for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Send for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Send for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Send for CapturableContent"],["impl Send for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Send for CapturableDisplay"],["impl Send for CapturableWindow"],["impl Send for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Send for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Send for CaptureAccessToken"],["impl Send for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Send for CaptureStream"],["impl Send for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Send for AudioFrame"],["impl Send for VideoFrame"],["impl Send for Point",1,["crabgrab::util::Point"]],["impl Send for Rect",1,["crabgrab::util::Rect"]],["impl Send for Size",1,["crabgrab::util::Size"]],["impl<'content> Send for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Send for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Send for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Send for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Send for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Send for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Send for FrameBitmapRgbaF16x4<Data>
    where\n Data: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Send for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataArgbPacked: Send,\n DataBgra: Send,\n DataChroma: Send,\n DataLuma: Send,\n DataRgbaF16: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Send for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n ChromaData: Send,\n LumaData: Send,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Send for PooledBitmap<T>
    where\n T: Send,
    ",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/core/marker/trait.Sync.js b/docs/windows_docs/trait.impl/core/marker/trait.Sync.js index 3d246d3e..d33e6bf8 100644 --- a/docs/windows_docs/trait.impl/core/marker/trait.Sync.js +++ b/docs/windows_docs/trait.impl/core/marker/trait.Sync.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !Sync for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Sync for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Sync for CaptureConfigError"],["impl Sync for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Sync for StreamCreateError"],["impl Sync for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Sync for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Sync for StreamStopError"],["impl Sync for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Sync for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Sync for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Sync for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Sync for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Sync for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Sync for ScreenshotError"],["impl Sync for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Sync for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Sync for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Sync for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Sync for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Sync for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Sync for CapturableContent"],["impl Sync for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Sync for CapturableDisplay"],["impl Sync for CapturableWindow"],["impl Sync for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Sync for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Sync for CaptureAccessToken"],["impl Sync for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Sync for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Sync for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Sync for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Sync for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Sync for AudioFrame"],["impl Sync for VideoFrame"],["impl Sync for Point",1,["crabgrab::util::Point"]],["impl Sync for Rect",1,["crabgrab::util::Rect"]],["impl Sync for Size",1,["crabgrab::util::Size"]],["impl<'content> Sync for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Sync for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Sync for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Sync for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !Sync for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Sync for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Sync for CaptureConfigError"],["impl Sync for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Sync for StreamCreateError"],["impl Sync for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Sync for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Sync for StreamStopError"],["impl Sync for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Sync for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Sync for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Sync for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Sync for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Sync for ScreenshotError"],["impl Sync for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Sync for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Sync for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Sync for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Sync for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Sync for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Sync for CapturableContent"],["impl Sync for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Sync for CapturableDisplay"],["impl Sync for CapturableWindow"],["impl Sync for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Sync for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Sync for CaptureAccessToken"],["impl Sync for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Sync for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Sync for AudioFrame"],["impl Sync for VideoFrame"],["impl Sync for Point",1,["crabgrab::util::Point"]],["impl Sync for Rect",1,["crabgrab::util::Rect"]],["impl Sync for Size",1,["crabgrab::util::Size"]],["impl<'content> Sync for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Sync for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> !Sync for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> !Sync for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Sync for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Sync for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Sync for FrameBitmapRgbaF16x4<Data>
    where\n Data: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Sync for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataArgbPacked: Sync,\n DataBgra: Sync,\n DataChroma: Sync,\n DataLuma: Sync,\n DataRgbaF16: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Sync for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n ChromaData: Sync,\n LumaData: Sync,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Sync for PooledBitmap<T>
    where\n T: Sync + Send,
    ",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/core/marker/trait.Unpin.js b/docs/windows_docs/trait.impl/core/marker/trait.Unpin.js index c966658d..b1ee76c6 100644 --- a/docs/windows_docs/trait.impl/core/marker/trait.Unpin.js +++ b/docs/windows_docs/trait.impl/core/marker/trait.Unpin.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl Unpin for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Unpin for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Unpin for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Unpin for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Unpin for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Unpin for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Unpin for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Unpin for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl Unpin for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Unpin for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Unpin for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Unpin for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Unpin for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Unpin for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Unpin for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Unpin for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Unpin for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Unpin for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Unpin for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Unpin for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Unpin for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Unpin for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Unpin for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Unpin for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Unpin for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Unpin for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Unpin for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Unpin for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Unpin for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Unpin for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl Unpin for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl Unpin for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl Unpin for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl Unpin for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Unpin for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Unpin for Point",1,["crabgrab::util::Point"]],["impl Unpin for Rect",1,["crabgrab::util::Rect"]],["impl Unpin for Size",1,["crabgrab::util::Size"]],["impl<'content> Unpin for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Unpin for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Unpin for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Unpin for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl Unpin for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl Unpin for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl Unpin for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl Unpin for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl Unpin for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl Unpin for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl Unpin for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl Unpin for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl Unpin for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl Unpin for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl Unpin for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl Unpin for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl Unpin for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl Unpin for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl Unpin for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl Unpin for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl Unpin for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl Unpin for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl Unpin for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl Unpin for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl Unpin for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl Unpin for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl Unpin for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl Unpin for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl Unpin for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl Unpin for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl Unpin for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl Unpin for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl Unpin for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl Unpin for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl Unpin for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl Unpin for Point",1,["crabgrab::util::Point"]],["impl Unpin for Rect",1,["crabgrab::util::Rect"]],["impl Unpin for Size",1,["crabgrab::util::Size"]],["impl<'content> Unpin for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> Unpin for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> Unpin for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> Unpin for AudioChannelDataSamples<'data, T>",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> Unpin for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> Unpin for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> Unpin for FrameBitmapRgbaF16x4<Data>
    where\n Data: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> Unpin for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataArgbPacked: Unpin,\n DataBgra: Unpin,\n DataChroma: Unpin,\n DataLuma: Unpin,\n DataRgbaF16: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> Unpin for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n ChromaData: Unpin,\n LumaData: Unpin,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> Unpin for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js b/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js index 9f719a55..4333f99f 100644 --- a/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js +++ b/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.RefUnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !RefUnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !RefUnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !RefUnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !RefUnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl RefUnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl RefUnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl RefUnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl RefUnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl RefUnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl RefUnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl RefUnwindSafe for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl RefUnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl RefUnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl RefUnwindSafe for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl RefUnwindSafe for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl RefUnwindSafe for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl RefUnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl RefUnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl RefUnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl RefUnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl RefUnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl RefUnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl RefUnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl RefUnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl RefUnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl RefUnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl RefUnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl RefUnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl RefUnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl RefUnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl RefUnwindSafe for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl RefUnwindSafe for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl RefUnwindSafe for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl RefUnwindSafe for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl RefUnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl RefUnwindSafe for Point",1,["crabgrab::util::Point"]],["impl RefUnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl RefUnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> RefUnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> RefUnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> RefUnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> RefUnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !RefUnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !RefUnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !RefUnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !RefUnwindSafe for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl !RefUnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl RefUnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl RefUnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl RefUnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl RefUnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl RefUnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl RefUnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl RefUnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl RefUnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl RefUnwindSafe for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl RefUnwindSafe for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl RefUnwindSafe for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl RefUnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl RefUnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl RefUnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl RefUnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl RefUnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl RefUnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl RefUnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl RefUnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl RefUnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl RefUnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl RefUnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl RefUnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl RefUnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl RefUnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl RefUnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl RefUnwindSafe for Point",1,["crabgrab::util::Point"]],["impl RefUnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl RefUnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> RefUnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> RefUnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> RefUnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> RefUnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> RefUnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> RefUnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> RefUnwindSafe for FrameBitmapRgbaF16x4<Data>
    where\n Data: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> RefUnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataArgbPacked: RefUnwindSafe,\n DataBgra: RefUnwindSafe,\n DataChroma: RefUnwindSafe,\n DataLuma: RefUnwindSafe,\n DataRgbaF16: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> RefUnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n ChromaData: RefUnwindSafe,\n LumaData: RefUnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> !RefUnwindSafe for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js b/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js index 74cf236c..ec2d374e 100644 --- a/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js +++ b/docs/windows_docs/trait.impl/core/panic/unwind_safe/trait.UnwindSafe.js @@ -1,3 +1,3 @@ (function() {var implementors = { -"crabgrab":[["impl !UnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !UnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !UnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !UnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl UnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl UnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl UnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl UnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl UnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl UnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl UnwindSafe for FrameBitmap",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl UnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl UnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl UnwindSafe for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl UnwindSafe for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl UnwindSafe for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl UnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl UnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl UnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl UnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl UnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl UnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl UnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl UnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl UnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl UnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl UnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl UnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl UnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl UnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl UnwindSafe for FrameBitmapBgraUnorm8x4",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl UnwindSafe for FrameBitmapRgbaF16x4",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl UnwindSafe for FrameBitmapRgbaUnormPacked1010102",1,["crabgrab::feature::bitmap::FrameBitmapRgbaUnormPacked1010102"]],["impl UnwindSafe for FrameBitmapYCbCr",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl UnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl UnwindSafe for Point",1,["crabgrab::util::Point"]],["impl UnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl UnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> UnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> UnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> UnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> UnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]]] +"crabgrab":[["impl !UnwindSafe for StreamEvent",1,["crabgrab::capture_stream::StreamEvent"]],["impl !UnwindSafe for CaptureConfig",1,["crabgrab::capture_stream::CaptureConfig"]],["impl !UnwindSafe for CaptureStream",1,["crabgrab::capture_stream::CaptureStream"]],["impl !UnwindSafe for FrameBitmapPool",1,["crabgrab::feature::bitmap::FrameBitmapPool"]],["impl !UnwindSafe for VideoFrame",1,["crabgrab::frame::VideoFrame"]],["impl UnwindSafe for CapturableContentError",1,["crabgrab::capturable_content::CapturableContentError"]],["impl UnwindSafe for CaptureConfigError",1,["crabgrab::capture_stream::CaptureConfigError"]],["impl UnwindSafe for CapturePixelFormat",1,["crabgrab::capture_stream::CapturePixelFormat"]],["impl UnwindSafe for StreamCreateError",1,["crabgrab::capture_stream::StreamCreateError"]],["impl UnwindSafe for StreamError",1,["crabgrab::capture_stream::StreamError"]],["impl UnwindSafe for StreamStopError",1,["crabgrab::capture_stream::StreamStopError"]],["impl UnwindSafe for VideoFrameBitmapError",1,["crabgrab::feature::bitmap::VideoFrameBitmapError"]],["impl UnwindSafe for VideoRange",1,["crabgrab::feature::bitmap::VideoRange"]],["impl UnwindSafe for WindowsDx11VideoFrameError",1,["crabgrab::feature::dx11::WindowsDx11VideoFrameError"]],["impl UnwindSafe for WindowsDxgiCaptureStreamError",1,["crabgrab::feature::dxgi::WindowsDxgiCaptureStreamError"]],["impl UnwindSafe for WindowsDxgiVideoFrameError",1,["crabgrab::feature::dxgi::WindowsDxgiVideoFrameError"]],["impl UnwindSafe for ScreenshotError",1,["crabgrab::feature::screenshot::ScreenshotError"]],["impl UnwindSafe for WgpuVideoFrameError",1,["crabgrab::feature::wgpu::WgpuVideoFrameError"]],["impl UnwindSafe for WgpuVideoFramePlaneTexture",1,["crabgrab::feature::wgpu::WgpuVideoFramePlaneTexture"]],["impl UnwindSafe for AudioBufferError",1,["crabgrab::frame::AudioBufferError"]],["impl UnwindSafe for AudioChannelCount",1,["crabgrab::frame::AudioChannelCount"]],["impl UnwindSafe for AudioSampleRate",1,["crabgrab::frame::AudioSampleRate"]],["impl UnwindSafe for CapturableApplication",1,["crabgrab::capturable_content::CapturableApplication"]],["impl UnwindSafe for CapturableContent",1,["crabgrab::capturable_content::CapturableContent"]],["impl UnwindSafe for CapturableContentFilter",1,["crabgrab::capturable_content::CapturableContentFilter"]],["impl UnwindSafe for CapturableDisplay",1,["crabgrab::capturable_content::CapturableDisplay"]],["impl UnwindSafe for CapturableWindow",1,["crabgrab::capturable_content::CapturableWindow"]],["impl UnwindSafe for CapturableWindowFilter",1,["crabgrab::capturable_content::CapturableWindowFilter"]],["impl UnwindSafe for AudioCaptureConfig",1,["crabgrab::capture_stream::AudioCaptureConfig"]],["impl UnwindSafe for CaptureAccessToken",1,["crabgrab::capture_stream::CaptureAccessToken"]],["impl UnwindSafe for AudioFrame",1,["crabgrab::frame::AudioFrame"]],["impl UnwindSafe for Point",1,["crabgrab::util::Point"]],["impl UnwindSafe for Rect",1,["crabgrab::util::Rect"]],["impl UnwindSafe for Size",1,["crabgrab::util::Size"]],["impl<'content> UnwindSafe for CapturableDisplayIterator<'content>",1,["crabgrab::capturable_content::CapturableDisplayIterator"]],["impl<'content> UnwindSafe for CapturableWindowIterator<'content>",1,["crabgrab::capturable_content::CapturableWindowIterator"]],["impl<'data> UnwindSafe for AudioChannelData<'data>",1,["crabgrab::frame::AudioChannelData"]],["impl<'data, T> UnwindSafe for AudioChannelDataSamples<'data, T>
    where\n T: RefUnwindSafe,
    ",1,["crabgrab::frame::AudioChannelDataSamples"]],["impl<Data> UnwindSafe for FrameBitmapArgbUnormPacked2101010<Data>
    where\n Data: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapArgbUnormPacked2101010"]],["impl<Data> UnwindSafe for FrameBitmapBgraUnorm8x4<Data>
    where\n Data: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapBgraUnorm8x4"]],["impl<Data> UnwindSafe for FrameBitmapRgbaF16x4<Data>
    where\n Data: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapRgbaF16x4"]],["impl<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma> UnwindSafe for FrameBitmap<DataBgra, DataArgbPacked, DataRgbaF16, DataLuma, DataChroma>
    where\n DataArgbPacked: UnwindSafe,\n DataBgra: UnwindSafe,\n DataChroma: UnwindSafe,\n DataLuma: UnwindSafe,\n DataRgbaF16: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmap"]],["impl<LumaData, ChromaData> UnwindSafe for FrameBitmapYCbCr<LumaData, ChromaData>
    where\n ChromaData: UnwindSafe,\n LumaData: UnwindSafe,
    ",1,["crabgrab::feature::bitmap::FrameBitmapYCbCr"]],["impl<T> !UnwindSafe for PooledBitmap<T>",1,["crabgrab::feature::bitmap::PooledBitmap"]]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.js b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataArgbUnormPacked2101010.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.js b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataBgra8x4.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataChroma.js b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataChroma.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataChroma.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataLuma.js b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataLuma.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataLuma.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.js b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.js new file mode 100644 index 00000000..d7ba5ecd --- /dev/null +++ b/docs/windows_docs/trait.impl/crabgrab/feature/bitmap/trait.BitmapDataRgbaF16x4.js @@ -0,0 +1,3 @@ +(function() {var implementors = { +"crabgrab":[] +};if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/docs/windows_docs/type.impl/crabgrab/feature/bitmap/enum.FrameBitmap.js b/docs/windows_docs/type.impl/crabgrab/feature/bitmap/enum.FrameBitmap.js new file mode 100644 index 00000000..f28ad58b --- /dev/null +++ b/docs/windows_docs/type.impl/crabgrab/feature/bitmap/enum.FrameBitmap.js @@ -0,0 +1,3 @@ +(function() {var type_impls = { +"crabgrab":[] +};if (window.register_type_impls) {window.register_type_impls(type_impls);} else {window.pending_type_impls = type_impls;}})() \ No newline at end of file diff --git a/examples/feature_bitmap.rs b/examples/feature_bitmap.rs index 8f542fbc..b2488a2c 100644 --- a/examples/feature_bitmap.rs +++ b/examples/feature_bitmap.rs @@ -30,7 +30,7 @@ fn main() { Ok(bitmap) => { match bitmap { crabgrab::feature::bitmap::FrameBitmap::BgraUnorm8x4(_) => println!("format: BgraUnorm8x4"), - crabgrab::feature::bitmap::FrameBitmap::RgbaUnormPacked1010102(_) => println!("format: RgbaUnormPacked1010102"), + crabgrab::feature::bitmap::FrameBitmap::ArgbUnormPacked2101010(_) => println!("format: ArgbUnormPacked2101010"), crabgrab::feature::bitmap::FrameBitmap::RgbaF16x4(_) => println!("format: RgbaF16x4"), crabgrab::feature::bitmap::FrameBitmap::YCbCr(_) => println!("format: YCbCr"), } diff --git a/examples/feature_bitmap_pooled.rs b/examples/feature_bitmap_pooled.rs new file mode 100644 index 00000000..6be74f57 --- /dev/null +++ b/examples/feature_bitmap_pooled.rs @@ -0,0 +1,61 @@ +use std::time::Duration; + +use crabgrab::{feature::bitmap::VideoFrameBitmap as _, prelude::*}; + +fn main() { + let runtime = tokio::runtime::Builder::new_multi_thread() + .build().unwrap(); + let future = runtime.spawn(async { + let token = match CaptureStream::test_access(false) { + Some(token) => token, + None => CaptureStream::request_access(false).await.expect("Expected capture access") + }; + let filter = CapturableContentFilter::NORMAL_WINDOWS; + let content = CapturableContent::new(filter).await.unwrap(); + let window = content.windows().filter(|window| { + let app_identifier = window.application().identifier(); + window.title().len() != 0 && app_identifier.to_lowercase().contains("firefox") + }).next(); + let bitmap_pool = FrameBitmapPool::new(10); + match window { + Some(window) => { + println!("capturing window: {}", window.title()); + let config = CaptureConfig::with_window(window, CaptureStream::supported_pixel_formats()[0]).unwrap(); + let mut stream = CaptureStream::new(token, config, move |stream_event| { + match stream_event { + Ok(event) => { + match event { + StreamEvent::Video(frame) => { + println!("Got frame: {}", frame.frame_id()); + match frame.get_pooled_bitmap(&bitmap_pool) { + Ok(bitmap) => { + match bitmap { + crabgrab::feature::bitmap::FrameBitmap::BgraUnorm8x4(_) => println!("format: BgraUnorm8x4"), + crabgrab::feature::bitmap::FrameBitmap::ArgbUnormPacked2101010(_) => println!("format: ArgbUnormPacked2101010"), + crabgrab::feature::bitmap::FrameBitmap::RgbaF16x4(_) => println!("format: RgbaF16x4"), + crabgrab::feature::bitmap::FrameBitmap::YCbCr(_) => println!("format: YCbCr"), + } + }, + Err(e) => { + println!("Bitmap error: {:?}", e); + } + } + }, + _ => {} + } + }, + Err(error) => { + println!("Stream error: {:?}", error); + } + } + }).unwrap(); + println!("stream created!"); + tokio::task::block_in_place(|| std::thread::sleep(Duration::from_millis(40000))); + stream.stop().unwrap(); + }, + None => { println!("Failed to find window"); } + } + }); + runtime.block_on(future).unwrap(); + runtime.shutdown_timeout(Duration::from_millis(100000)); +} diff --git a/examples/feature_screenshot.rs b/examples/feature_screenshot.rs index ae192b80..6cfd549a 100644 --- a/examples/feature_screenshot.rs +++ b/examples/feature_screenshot.rs @@ -24,7 +24,7 @@ fn main() { Ok(bitmap) => { match bitmap { crabgrab::feature::bitmap::FrameBitmap::BgraUnorm8x4(_) => println!("format: BgraUnorm8x4"), - crabgrab::feature::bitmap::FrameBitmap::RgbaUnormPacked1010102(_) => println!("format: RgbaUnormPacked1010102"), + crabgrab::feature::bitmap::FrameBitmap::ArgbUnormPacked2101010(_) => println!("format: RgbaUnormPacked1010102"), crabgrab::feature::bitmap::FrameBitmap::RgbaF16x4(_) => println!("format: RgbaF16x4"), crabgrab::feature::bitmap::FrameBitmap::YCbCr(_) => println!("format: YCbCr"), } diff --git a/examples/macos_platform.rs b/examples/platform_extensions.rs similarity index 62% rename from examples/macos_platform.rs rename to examples/platform_extensions.rs index 3bfdb79a..5c6b23c8 100644 --- a/examples/macos_platform.rs +++ b/examples/platform_extensions.rs @@ -1,6 +1,12 @@ use std::time::Duration; -use crabgrab::{platform::macos::MacosCapturableWindowExt, prelude::*}; +#[cfg(target_os = "macos")] +use crabgrab::platform::macos::MacosCapturableWindowExt as _; + +#[cfg(target_os = "windows")] +use crabgrab::platform::windows::WindowsCapturableWindowExt as _; + +use crabgrab::prelude::*; fn main() { let runtime = tokio::runtime::Builder::new_multi_thread() @@ -9,7 +15,10 @@ fn main() { let filter = CapturableContentFilter::NORMAL_WINDOWS; let content = CapturableContent::new(filter).await.unwrap(); for window in content.windows() { + #[cfg(target_os = "macos")] println!("window: {}, app: {}, window layer: {:?}, window level: {:?}", window.title(), window.application().identifier(), window.get_window_layer().ok(), window.get_window_level().ok()); + #[cfg(target_os = "windows")] + println!("window: {}, window handle: {:?}", window.title(), window.get_window_handle()); } }); runtime.block_on(future).unwrap(); diff --git a/src/feature/bitmap/mod.rs b/src/feature/bitmap/mod.rs index 52bef14f..77176479 100644 --- a/src/feature/bitmap/mod.rs +++ b/src/feature/bitmap/mod.rs @@ -2,10 +2,18 @@ use std::error::Error; use std::fmt::Display; +use std::os::raw::c_void; +use bytemuck::Pod; +use bytemuck::Zeroable; +use parking_lot::Mutex; +use parking_lot::Condvar; +use std::sync::Arc; use half::f16; +use crate::prelude::CapturePixelFormat; use crate::prelude::VideoFrame; + #[cfg(target_os = "macos")] use crate::platform::macos::frame::MacosVideoFrame; #[cfg(target_os = "macos")] @@ -28,23 +36,148 @@ use windows::Win32::System::WinRT::Direct3D11::IDirect3DDxgiInterfaceAccess; #[cfg(target_os = "windows")] use windows::Win32::Graphics::Direct3D11::D3D11_USAGE_DYNAMIC; +#[derive(Clone)] +struct BitmapPool { + free_bitmaps_and_count: Arc>, usize)>>, + free_condition: Arc, + max: usize, +} + +impl BitmapPool { + pub fn new(initial_count: usize, max: usize, initial_resolution: (usize, usize)) -> Arc { + let mut free_bitmaps = Vec::new(); + for _ in 0..initial_count { + free_bitmaps.push( + vec![T::zeroed(); initial_resolution.0 * initial_resolution.1].into_boxed_slice() + ) + } + Arc::new(Self { + free_bitmaps_and_count: Arc::new(Mutex::new((free_bitmaps, initial_count))), + free_condition: Arc::new(Condvar::new()), + max, + }) + } + + fn make_new_bitmap(self: &Arc, resolution: (usize, usize)) -> Option> { + Some(PooledBitmap { + data: PooledBitmapData { + data: Some(vec![T::zeroed(); resolution.0 * resolution.1].into_boxed_slice()), + pool: self.clone() + }, + width: resolution.0, + height: resolution.1 + }) + } + + pub fn try_get_bitmap(self: &Arc, resolution: (usize, usize)) -> Option> { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + self.try_get_bitmap_internal(resolution, &mut free_bitmaps_and_count) + } + + pub fn get_bitmap(self: &Arc, resolution: (usize, usize)) -> PooledBitmap { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + loop { + if let Some(pooled_bitmap) = self.try_get_bitmap_internal(resolution, &mut free_bitmaps_and_count) { + return pooled_bitmap; + } else { + self.free_condition.wait(&mut free_bitmaps_and_count); + } + } + } + + fn try_get_bitmap_internal(self: &Arc, resolution: (usize, usize), free_bitmaps_and_count: &mut (Vec>, usize)) -> Option> { + if let Some(bitmap_data) = free_bitmaps_and_count.0.pop() { + if bitmap_data.len() <= resolution.0 * resolution.1 { + return Some( + PooledBitmap { + data: PooledBitmapData { + data: Some(bitmap_data), + pool: self.clone() + }, + width: resolution.0, + height: resolution.1 + } + ); + } + free_bitmaps_and_count.1 -= 1; + } + if free_bitmaps_and_count.1 < self.max { + return self.make_new_bitmap(resolution); + } + None + } + + pub fn free_pooled(&self) { + let mut free_bitmaps_and_count = self.free_bitmaps_and_count.lock(); + let count = free_bitmaps_and_count.0.len(); + free_bitmaps_and_count.0.clear(); + free_bitmaps_and_count.1 -= count; + } +} + +struct PooledBitmapData { + pub data: Option>, + pub pool: Arc>, +} + +impl Drop for PooledBitmapData { + fn drop(&mut self) { + if let Some(data) = self.data.take() { + let mut free_bitmaps_and_count = self.pool.free_bitmaps_and_count.lock(); + free_bitmaps_and_count.0.push(data); + self.pool.free_condition.notify_all(); + } + } +} + +/// A pooled bitmap, belinging to it's creator BitmapPool. When this bitmap is dropped, it will be returned to it's pool. +pub struct PooledBitmap { + data: PooledBitmapData, + pub width: usize, + pub height: usize, +} + +impl AsRef<[T]> for PooledBitmap { + fn as_ref(&self) -> &[T] { + &self.data.data.as_ref().unwrap()[..] + } +} + +impl AsMut<[T]> for PooledBitmap { + fn as_mut(&mut self) -> &mut [T] { + &mut self.data.data.as_mut().unwrap()[..] + } +} + +/// Bitmap data in the Bgra8888 format +pub trait BitmapDataBgra8x4: Sized + AsRef<[[u8; 4]]> + AsMut<[[u8; 4]]> {} +impl + AsMut<[[u8; 4]]>> BitmapDataBgra8x4 for T {} + /// A Bgra8888 format bitmap -pub struct FrameBitmapBgraUnorm8x4 { - pub data: Box<[[u8; 4]]>, +pub struct FrameBitmapBgraUnorm8x4 { + pub data: Data, pub width: usize, pub height: usize, } +/// Bitmap data in the Argb2101010 format +pub trait BitmapDataArgbUnormPacked2101010: Sized + AsRef<[u32]> {} +impl + AsMut<[u32]>> BitmapDataArgbUnormPacked2101010 for T {} + /// A Rgba1010102 format bitmap -pub struct FrameBitmapRgbaUnormPacked1010102 { - pub data: Box<[u32]>, +pub struct FrameBitmapArgbUnormPacked2101010 { + pub data: Data, pub width: usize, pub height: usize, } +/// Bitmap data in the RgbaF16x4 format +pub trait BitmapDataRgbaF16x4: Sized + AsRef<[[f16; 4]]> {} +impl + AsMut<[[f16; 4]]>> BitmapDataRgbaF16x4 for T {} + /// A RgbaF16x4 format bitmap -pub struct FrameBitmapRgbaF16x4 { - pub data: Box<[[f16; 4]]>, +pub struct FrameBitmapRgbaF16x4 { + pub data: Data, pub width: usize, pub height: usize, } @@ -57,34 +190,139 @@ pub enum VideoRange { Full, } +/// Bitmap data in the Luma/u8 format +pub trait BitmapDataLuma: Sized + AsRef<[u8]> {} +impl + AsMut<[u8]>> BitmapDataLuma for T {} + +/// Bitmap data in the CbCr Chroma/u8x2 format +pub trait BitmapDataChroma: Sized + AsRef<[[u8; 2]]> {} +impl + AsMut<[[u8; 2]]>> BitmapDataChroma for T {} + /// A YCbCr image, corresponding to either V420 or F420 pixel formats. /// /// Dual-planar, with luminance (Y) in one plane, and chrominance (CbCr) in another. /// Note that each plane may have a different size, as with V420 format, where /// the chroma plane is 2 by 2 blocks, but luma is per-pixel -pub struct FrameBitmapYCbCr { - pub luma_data: Box<[u8]>, +pub struct FrameBitmapYCbCr { + pub luma_data: LumaData, pub luma_width: usize, pub luma_height: usize, - pub chroma_data: Box<[[u8; 2]]>, + pub chroma_data: ChromaData, pub chroma_width: usize, pub chroma_height: usize, pub range: VideoRange, } /// A bitmap image of the selected format -pub enum FrameBitmap { - BgraUnorm8x4(FrameBitmapBgraUnorm8x4), - RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102), - RgbaF16x4(FrameBitmapRgbaF16x4), - YCbCr(FrameBitmapYCbCr), +pub enum FrameBitmap { + BgraUnorm8x4(FrameBitmapBgraUnorm8x4), + ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010), + RgbaF16x4(FrameBitmapRgbaF16x4), + YCbCr(FrameBitmapYCbCr), +} + +/// A Bitmap with boxed-slice image data +pub type BoxedSliceFrameBitmap = FrameBitmap< + // Bgra8888 + Box<[[u8; 4]]>, + // ArgbPacked2101010 + Box<[u32]>, + // RgbaF16x4 + Box<[[f16; 4]]>, + // Luma + Box<[u8]>, + // Chroma + Box<[[u8; 2]]> +>; + +/// A bitmap with booled images as bitmap data +pub type PooledFrameBitmap = FrameBitmap< + // Bgra8888 + PooledBitmap<[u8; 4]>, + // ArgbPacked2101010 + PooledBitmap, + // RgbaF16x4 + PooledBitmap<[f16; 4]>, + // Luma + PooledBitmap, + // Chroma + PooledBitmap<[u8; 2]>, +>; + +/// A pool of frame bitmaps +pub struct FrameBitmapPool { + bgra_u8x4: Arc>, + argb_packed_2101010: Arc>, + rgba_f16x4: Arc>, + luma: Arc>, + chroma: Arc>, +} + +impl FrameBitmapPool { + /// Create a new bitmap pool with an initial `capacity` and `resolution` for the given `format`, limited to `max` pooled bitmaps + pub fn new_with_initial_capacity(capacity: usize, initial_resolution: (usize, usize), max: usize, format: CapturePixelFormat) -> Self { + Self { + bgra_u8x4: BitmapPool::new( + if format == CapturePixelFormat::Bgra8888 { capacity } else { 0 }, + max, + initial_resolution + ), + argb_packed_2101010: BitmapPool::new( + if format == CapturePixelFormat::Argb2101010 { capacity } else { 0 }, + max, + initial_resolution + ), + rgba_f16x4: BitmapPool::new( + 0, + max, + initial_resolution + ), + luma: BitmapPool::new( + if format == CapturePixelFormat::F420 || format == CapturePixelFormat::V420 { capacity } else { 0 }, + max, + initial_resolution + ), + chroma: BitmapPool::new( + if format == CapturePixelFormat::F420 || format == CapturePixelFormat::V420 { capacity } else { 0 }, + max, + initial_resolution + ) + } + } + + /// Create a new frame bitmap pool, limited to `max` pooled bitmaps + pub fn new(max: usize) -> Self { + Self { + bgra_u8x4: BitmapPool::new(0, max, (0, 0)), + argb_packed_2101010: BitmapPool::new(0, max, (0, 0)), + rgba_f16x4: BitmapPool::new(0, max, (0, 0)), + luma: BitmapPool::new(0, max, (0, 0)), + chroma: BitmapPool::new(0, max, (0, 0)), + } + } + + /// Free all pooled bitmaps - this happens automatically on `drop()`, but you can free them ahead of time if you need to. + pub fn free_pooled(&self) { + self.bgra_u8x4.free_pooled(); + self.argb_packed_2101010.free_pooled(); + self.rgba_f16x4.free_pooled(); + self.luma.free_pooled(); + self.chroma.free_pooled(); + } } /// A video frame which can produce a bitmap pub trait VideoFrameBitmap { /// Create a bitmap image from this frame. This usually involves a memory transfer from VRAM to system RAM, /// and is an expensive operation. - fn get_bitmap(&self) -> Result; + fn get_bitmap(&self) -> Result; + + /// Try and get a pooled bitmap using the given bitmap pool, and return Ok(None) if there are no pooled bitmaps available + /// and `max` pooled bitmaps exist + fn try_get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result, VideoFrameBitmapError>; + + /// Get a pooled bitmap, waiting for one to become available if `max` pooled bitmaps are checked out + fn get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result; } #[derive(Clone, Debug)] @@ -115,8 +353,28 @@ impl Error for VideoFrameBitmapError { } } -impl VideoFrameBitmap for VideoFrame { - fn get_bitmap(&self) -> Result { +#[derive(Copy, Clone)] +struct VideoFramePlanePtr { + ptr: *const c_void, + width: usize, + height: usize, + bytes_per_row: usize, +} + +enum VideoFrameDataCopyPtrs { + Bgra8888(VideoFramePlanePtr), + ArgbPacked2101010(VideoFramePlanePtr), + RgbaF16x4(VideoFramePlanePtr), + F420{luma: VideoFramePlanePtr, chroma: VideoFramePlanePtr}, + V420{luma: VideoFramePlanePtr, chroma: VideoFramePlanePtr}, +} + +trait VideoFrameBitmapInternal { + fn get_bitmap_internal(&self, output_mapping: &impl Fn(VideoFrameDataCopyPtrs) -> Result) -> Result; +} + +impl VideoFrameBitmapInternal for VideoFrame { + fn get_bitmap_internal(&self, output_mapping: &impl Fn(VideoFrameDataCopyPtrs) -> Result) -> Result { #[cfg(target_os = "windows")] { let (width, height) = self.impl_video_frame.frame_size; @@ -159,34 +417,36 @@ impl VideoFrameBitmap for VideoFrame { map_result.map_err(|_| VideoFrameBitmapError::Other("Couldn't map staging texture".to_string()))?; match pixel_format { DirectXPixelFormat::B8G8R8A8UIntNormalized => { - let mut image_data = vec![[0u8; 4]; width * height]; let bpr = mapped_resource.RowPitch as usize; - let surface_slice = std::slice::from_raw_parts(mapped_resource.pData as *const u8, bpr * height); - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, [u8; 4]>(&surface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - let _ = device.Unmap(&staging_texture, 0); - Ok(FrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: mapped_resource.pData as *const c_void, width, height, - })) + bytes_per_row: bpr + }; + + let mapping_result = output_mapping(VideoFrameDataCopyPtrs::Bgra8888(plane_ptr)); + + let _ = device.Unmap(&staging_texture, 0); + + mapping_result }, DirectXPixelFormat::R10G10B10A2UIntNormalized => { - let mut image_data = vec![0u32; width * height]; let bpr = mapped_resource.RowPitch as usize; - let surface_slice = std::slice::from_raw_parts(mapped_resource.pData as *const u8, bpr * height); - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, u32>(&surface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - let _ = device.Unmap(&staging_texture, 0); - Ok(FrameBitmap::RgbaUnormPacked1010102(FrameBitmapRgbaUnormPacked1010102 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: mapped_resource.pData as *const c_void, width, height, - })) + bytes_per_row: bpr + }; + + let mapping_result = output_mapping(VideoFrameDataCopyPtrs::ArgbPacked2101010(plane_ptr)); + + let _ = device.Unmap(&staging_texture, 0); + + mapping_result }, _ => { Err(VideoFrameBitmapError::Other("Unknown or unsupported pixel format on DXGISurface".to_string())) @@ -216,18 +476,16 @@ impl VideoFrameBitmap for VideoFrame { let bpr = iosurface.get_bytes_per_row(); let height = iosurface.get_height(); let width = iosurface.get_width(); - let mut image_data = vec![[0; 4]; width * height]; let base_address = lock_gaurd.get_base_address().ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let iosurface_slice = unsafe { std::slice::from_raw_parts(base_address as *const u8, bpr * height) }; - for y in 0..height { - let source_slice = bytemuck::cast_slice::<_, [u8; 4]>(&iosurface_slice[(bpr * y)..(bpr * y + 4 * width)]); - image_data[(width * y)..(width * y + width)].copy_from_slice(source_slice); - } - Ok(FrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { - data: image_data.into_boxed_slice(), + + let plane_ptr = VideoFramePlanePtr { + ptr: base_address, width, height, - })) + bytes_per_row: bpr + }; + + output_mapping(VideoFrameDataCopyPtrs::Bgra8888(plane_ptr)) }, Some(CVPixelFormat::V420) | Some(CVPixelFormat::F420) => { @@ -235,37 +493,32 @@ impl VideoFrameBitmap for VideoFrame { let luma_bpr = iosurface.get_bytes_per_row_of_plane(0); let luma_height = iosurface.get_height_of_plane(0); let luma_width = iosurface.get_width_of_plane(0); - - let mut luma_image_data = vec![0u8; luma_width * luma_height]; let luma_base_address = lock_gaurd.get_base_address_of_plane(0).ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let luma_iosurface_slice = unsafe { std::slice::from_raw_parts(luma_base_address as *const u8, luma_bpr * luma_height) }; - for y in 0..luma_height { - let luma_source_slice = &luma_iosurface_slice[(luma_bpr * y)..(luma_bpr * y + luma_width)]; - luma_image_data[(luma_width * y)..(luma_width * y + luma_width)].copy_from_slice(luma_source_slice); - } + let luma_plane_ptr = VideoFramePlanePtr { + ptr: luma_base_address, + width: luma_width, + height: luma_height, + bytes_per_row: luma_bpr, + }; let chroma_bpr = iosurface.get_bytes_per_row_of_plane(1); let chroma_height = iosurface.get_height_of_plane(1); let chroma_width = iosurface.get_width_of_plane(1); - let mut chroma_image_data = vec![[0u8; 2]; chroma_width * chroma_height]; let chroma_base_address = lock_gaurd.get_base_address_of_plane(1).ok_or(VideoFrameBitmapError::Other("Failed to get base address of iosurface".into()))?; - let chroma_iosurface_slice = unsafe { std::slice::from_raw_parts(chroma_base_address as *const u8, chroma_bpr * chroma_height) }; - for y in 0..chroma_height { - let chroma_source_slice = bytemuck::cast_slice::<_, [u8; 2]>(&chroma_iosurface_slice[(chroma_bpr * y)..(chroma_bpr * y + 2 * chroma_width)]); - chroma_image_data[(chroma_width * y)..(chroma_width * y + chroma_width)].copy_from_slice(chroma_source_slice); - } + let chroma_plane_ptr = VideoFramePlanePtr { + ptr: chroma_base_address, + width: chroma_width, + height: chroma_height, + bytes_per_row: chroma_bpr, + }; - Ok(FrameBitmap::YCbCr(FrameBitmapYCbCr { - luma_data: luma_image_data.into_boxed_slice(), - chroma_data: chroma_image_data.into_boxed_slice(), - luma_width, - luma_height, - chroma_width, - chroma_height, - range: if pixel_format == Some(CVPixelFormat::F420) { VideoRange::Full } else { VideoRange::Video } - })) + if pixel_format == Some(CVPixelFormat::V420) { + output_mapping(VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr }) + } else { + output_mapping(VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr }) + } }, _ => Err(VideoFrameBitmapError::Other("Unknown pixel format on iosurface".to_string())) } @@ -276,4 +529,207 @@ impl VideoFrameBitmap for VideoFrame { } } +fn copy_boxed_slice_plane(plane_ptr: VideoFramePlanePtr) -> Box<[T]> { + let mut image_data = vec![T::zeroed(); plane_ptr.width * plane_ptr.height]; + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::() * plane_ptr.width)]); + image_data[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + image_data.into_boxed_slice() +} + +fn copy_pooled_plane(plane_ptr: VideoFramePlanePtr, pool: &Arc>) -> PooledBitmap { + let mut bitmap = pool.get_bitmap((plane_ptr.width, plane_ptr.height)); + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::() * plane_ptr.width)]); + AsMut::as_mut(&mut bitmap)[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + bitmap +} + +fn try_copy_pooled_plane(plane_ptr: VideoFramePlanePtr, pool: &Arc>) -> Option> { + let mut bitmap = pool.try_get_bitmap((plane_ptr.width, plane_ptr.height))?; + let src_slice = unsafe { std::slice::from_raw_parts(plane_ptr.ptr as *const u8, plane_ptr.bytes_per_row * plane_ptr.height) }; + for y in 0..plane_ptr.height { + let source_slice = bytemuck::cast_slice::<_, T>(&src_slice[(plane_ptr.bytes_per_row * y)..(plane_ptr.bytes_per_row * y + std::mem::size_of::() * plane_ptr.width)]); + AsMut::as_mut(&mut bitmap)[(plane_ptr.width * y)..(plane_ptr.width * y + plane_ptr.width)].copy_from_slice(source_slice); + } + Some(bitmap) +} + +impl VideoFrameBitmap for VideoFrame { + fn get_bitmap(&self) -> Result { + self.get_bitmap_internal::(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data: copy_boxed_slice_plane(bgra_plane_ptr), + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data: copy_boxed_slice_plane(argb_plane_ptr), + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(BoxedSliceFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_boxed_slice_plane(luma_plane_ptr), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_boxed_slice_plane(chroma_plane_ptr), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + })) + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(BoxedSliceFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_boxed_slice_plane(luma_plane_ptr), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_boxed_slice_plane(chroma_plane_ptr), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + })) + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + Ok(BoxedSliceFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data: copy_boxed_slice_plane(rgba_plane_ptr), + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + })) + } + } + }) + } + + fn get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result { + self.get_bitmap_internal::(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + Ok(PooledFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data: copy_pooled_plane(bgra_plane_ptr, &bitmap_pool.bgra_u8x4), + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + Ok(PooledFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data: copy_pooled_plane(argb_plane_ptr, &bitmap_pool.argb_packed_2101010), + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + })) + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + })) + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + Ok(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data: copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data: copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma), + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + })) + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + Ok(PooledFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data: copy_pooled_plane(rgba_plane_ptr, &bitmap_pool.rgba_f16x4), + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + })) + } + } + }) + } + + fn try_get_pooled_bitmap(&self, bitmap_pool: &FrameBitmapPool) -> Result, VideoFrameBitmapError> { + self.get_bitmap_internal::>(&|copy_ptrs| { + match copy_ptrs { + VideoFrameDataCopyPtrs::Bgra8888(bgra_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(bgra_plane_ptr, &bitmap_pool.bgra_u8x4) { + Ok(Some(PooledFrameBitmap::BgraUnorm8x4(FrameBitmapBgraUnorm8x4 { + data, + width: bgra_plane_ptr.width, + height: bgra_plane_ptr.height, + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::ArgbPacked2101010(argb_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(argb_plane_ptr, &bitmap_pool.argb_packed_2101010) { + Ok(Some(PooledFrameBitmap::ArgbUnormPacked2101010(FrameBitmapArgbUnormPacked2101010 { + data, + width: argb_plane_ptr.width, + height: argb_plane_ptr.height, + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::F420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + if let (Some(luma_data), Some(chroma_data)) = (try_copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), try_copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma)) { + Ok(Some(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data, + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data, + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Full + }))) + } else { + Ok(None) + } + + }, + VideoFrameDataCopyPtrs::V420 { luma: luma_plane_ptr, chroma: chroma_plane_ptr } => { + if let (Some(luma_data), Some(chroma_data)) = (try_copy_pooled_plane(luma_plane_ptr, &bitmap_pool.luma), try_copy_pooled_plane(chroma_plane_ptr, &bitmap_pool.chroma)) { + Ok(Some(PooledFrameBitmap::YCbCr(FrameBitmapYCbCr { + luma_data, + luma_width: luma_plane_ptr.width, + luma_height: luma_plane_ptr.height, + chroma_data, + chroma_width: chroma_plane_ptr.width, + chroma_height: chroma_plane_ptr.height, + range: VideoRange::Video + }))) + } else { + Ok(None) + } + }, + VideoFrameDataCopyPtrs::RgbaF16x4(rgba_plane_ptr) => { + if let Some(data) = try_copy_pooled_plane(rgba_plane_ptr, &bitmap_pool.rgba_f16x4) { + Ok(Some(PooledFrameBitmap::RgbaF16x4(FrameBitmapRgbaF16x4 { + data, + width: rgba_plane_ptr.width, + height: rgba_plane_ptr.height, + }))) + } else { + Ok(None) + } + } + } + }) + } +} +